《java网络编程和反射基础入门》由会员分享,可在线阅读,更多相关《java网络编程和反射基础入门(19页珍藏版)》请在金锄头文库上搜索。
1、java 反射:获取 Class 类对象1)getClass()2)通过类名.class3)forName(String className)通过 getConstructors()获取类对应的构造方法返回值是 Constructor1 客户端Client.javapackage com.chinasofti.eec.demo;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java
2、.io.PrintWriter;import .ServerSocket;import .Socket;import .UnknownHostException;import java.util.Scanner;public class Client private static PrintWriter pw = null;/打印private static BufferedReader br = null;/缓冲流private static Socket s;private static ServerSocket ss;private static Scanner scan = new S
3、canner(System.in);public static void main(String args) try s = new Socket(127.0.0.1,5500);pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream();br = new BufferedReader(new InputStreamReader(s.getInputStream();while(true)System.out.println(客户端说:);String str = scan.nextLine();pw.println(str)
4、;pw.flush();String string = br.readLine();System.out.println(服务端说:+string);if(byby.equals(str)break; catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();try br.close();pw.close(); catch (IOExc
5、eption e) / TODO Auto-generated catch blocke.printStackTrace();Person.javapackage com.chinasofti.eec.demo;public class Person public String name=zhansgan;public int age=18;public Person(String name, int age) super();this.name = name;this.age = age;public String getName() return name;public void setN
6、ame(String name) this.name = name;public int getAge() return age;public void setAge(int age) this.age = age;Overridepublic String toString() return Person name= + name + , age= + age + ;2 服务器Service.javapackage com.chinasofti.eec.demo;import java.io.BufferedReader;import java.io.IOException;import j
7、ava.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import .ServerSocket;import .Socket;import java.util.Scanner;/* 服务端* author Administrator*/public class Service private static PrintWriter pw = null;/打印private static BufferedReader br = null;/缓冲流private static Soc
8、ket s;private static ServerSocket ss;private static Scanner scan = new Scanner(System.in);public static void main(String args) try ss = new ServerSocket(5500);System.out.println(服务器启动成功-);s = ss.accept();/等待客户端链接System.out.println(链接成功+s.getRemoteSocketAddress();/返回此套接字链接端口的地址br = new BufferedReader
9、(new InputStreamReader(s.getInputStream();/准备读取客户端发过来的信息pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream();/准备向客户端写入信息while(true)String string = br.readLine();/读取客户端发过来的信息System.out.println(服务端接受到:+string);System.out.println(服务端说:);String str = scan.next();pw.println(str);/把服务端想说的话发送给客户
10、端pw.flush();if(byby.equals(str)break; catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();try br.close();pw.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();3 获取 class 对象package com.chinasofti.eec.demo;public class ClassDemo public static voi
11、d main(String args) String str = helloWorld;Class c = str.getClass();/获取Class类对象System.out.println(c.getName();ClassDemo1.javapackage com.chinasofti.eec.classdemo;public class ClassDemo public static void main(String args) A a = new A();Class c = a.getClass();String name = c.getName();System.out.pri
12、ntln(name);class A4 通配符package com.chinasofti.eec.demo;public class ClassDemo2 public static void main(String args) Class cls = String.class;System.out.println(cls.getName();ClassDemo2.javapackage com.chinasofti.eec.classdemo;import com.chinasofti.eec.vo.Person;/* * 三种方法得到Class类对象的方法* author Adminis
13、trator*/public class ClassDemo2 public static void main(String args) Class c1 = null;Class c2 = null;Class c3 = null;/第一种方式(最常用的一种)try c1 = Class.forName(com.chinasofti.eec.vo.Person); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();c2 = new Person().getClass();
14、c3 = Person.class;String name1 = c1.getName();String name2 = c2.getName();String name3 = c3.getName();System.out.println(name1+ +name2+ +name3);ClassDemo.javapackage com.chinasofti.eec.demo;public class ClassDemo3 public static void main(String args) throws ClassNotFoundException Class cls = Class.f
15、orName(java.io.File);System.out.println(cls.getName();5 反射获得类的构造器package com.chinasofti.eec.demo;public class ClassDemo4 public static void main(String args) throws ClassNotFoundException, InstantiationException, IllegalAccessException Class cls = Class.forName(com.chinasofti.eec.demo.Person);Person per = (Person)cls.newInstance();per.setName(123);per.setAge(18);System.out.println(per);ClassDemo3.javapackage com.chinasofti.eec.classdemo;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;im