java网络编程和反射基础入门.docx_第1页
java网络编程和反射基础入门.docx_第2页
java网络编程和反射基础入门.docx_第3页
java网络编程和反射基础入门.docx_第4页
java网络编程和反射基础入门.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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.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 Scanner(System.in);public static void main(String args) try s = new Socket(,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);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 (IOException 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(); = name;this.age = age;public String getName() return name;public void setName(String 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 java.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 Socket 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(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);/把服务端想说的话发送给客户端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 void 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.println(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 Administrator * */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();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.forName(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;import com.chinasofti.eec.vo.Person;/* * 通过反射获得类的构造器并初始化参数 * author Administrator * */public class ClassDemo3 public static void main(String args) Class c = null;Constructor con = null;try c = Class.forName(com.chinasofti.eec.vo.Person); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();con = c.getConstructors();Person person = null;try person = (Person)con1.newInstance(123,10); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();System.out.println(person);6 获取构造对象package com.chinasofti.eec.demo;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;public class ClassDemo5 public static void main(String args) throws NoSuchMethodException, SecurityException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException Class cls = Class.forName(com.chinasofti.eec.demo.Person);Constructor con = cls.getConstructors();/获取到构造方法Person per = (Person)con0.newInstance(gqk,18);System.out.println(per);ClassDemo5.javapackage com.chinasofti.eec.classdemo;/* * 获取全部的构造方法 */import java.lang.reflect.Constructor;public class ClassDemo4 public static void main(String args) Class c = null;Constructor con = null;try c = Class.forName(com.chinasofti.eec.vo.Person); catch (ClassNotFoundException e) e.printStackTrace();con = c.getConstructors();for (int i = 0; i con.length; i+) System.out.println(coni);7 方法类package com.chinasofti.eec.demo;import java.lang.reflect.Method;public class ClassDemo6 public static void main(String args) throws ClassNotFoundException, InstantiationException, IllegalAccessException Class cls = Class.forName(com.chinasofti.eec.demo.Person);Method m = cls.getMethods();for (int i = 0; i m.length; i+) System.out.println(mi.getParameterTypes()+ +mi);ClassDemo6.javapackage com.chinasofti.eec.classdemo;/* * 获取构造方法里面的信息 */import java.lang.reflect.Constructor;import java.lang.reflect.Modifier;public class ClassDemo5 public static void main(String args) Class c = null;Constructor con = null;try c = Class.forName(com.chinasofti.eec.vo.Person); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();con = c.getConstructors();for (int i = 0; i con.length; i+) /获得构造方法中的全部参数Class c1 = coni.getParameterTypes();/获得修饰符int num = coni.getModifiers();String xiushi = Modifier.toString(num);System.out.println(xiushi);/输出修饰符System.out.println(coni.getName();System.out.println();for (int j = 0; j c1.length; j+) System.out.println(c1j.getName();System.out.println();8 invoke反射package com.chinasofti.eec.demo;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class ClassDemo7 public static void main(String args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException Class cls = null;cls = Class.forName(com.chinasofti.eec.demo.Person);Method m = cls.getMethod(getName);Person person = new Person(zhangsan,18);String person1 = null;try person1 = (String)m.invoke(person); catch (IllegalArgumentException | InvocationTargetException e) / TODO Auto-generated catch blocke.printStackTrace();System.out.println(person1);ClassDemo7.javapackage com.chinasofti.eec.classdemo;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import com.chinasofti.eec.vo.Person;/* * 通过反射来创建Person类的对象 * author Administrator * */public class ClassDemo6 public static void main(String args) Class c = null;try c = Class.forName(com.chinasofti.eec.vo.Person); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();Person person = null;try person = (Person)c.newInstance();person.setName(123);person.setAge(18); catch (InstantiationException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IllegalAccessException e) / TODO Auto-generated catch blocke.printStackTrace();System.out.println(person);ClassDemo8.javapackage com.chinasofti.eec.classdemo;import java.lang.reflect.Method;public class InvokeDemo public static void main(String args) Class c = null;Object obj = null;try c = Class.forName(com.chinasofti.eec.vo.Person);obj = c.newInstance(); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();setters(obj,name,霍建华,String.class);setters(obj,age,30,int.class);System.out.println(姓名是:+getters(obj, name)+ 年龄是:+getters(obj, age);/* * 设定4个参数 * Object obj : 要操作的对象 * String att : 要操作的属性 * Object value: 属性设置的值 * Class type : 属性的类型 */public static void setters (Object obj,String att,Object value,Class type)try Method m = obj.getClass().getMethod(set+changeFirst(att), type);m.invoke(obj, value); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace(); public static Object getters (Object obj,String att)Object o = null;try Method m = obj.getClass().getMethod(get+changeFirst(att);o = m.invoke(obj); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();return o; public static String changeFirst(String att)String str =att.substring(0, 1).toUpperCase()+att.substring(1);return str;反射package com.chinasofti.eec.classdemo;import java.lang.reflect.Field;import com.chinasofti.eec.vo.Person;public class Ref public static void main(String args) throws IllegalArgumentException, IllegalAccessException Class c = null;Field field = null;try c = Class.forName(com.chinasofti.eec.vo.Person); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();try field = c.getDeclaredField(age); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();Person obj = new Person(郭桥坤,28);/field.set(obj, 13123);int str = (int)field.get(obj);System.out.println(str);9 底层get set方法package com.chinasofti.eec.demo;import java.lang.reflect.InvocationTargetExceptio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论