欢迎来到天天文库
浏览记录
ID:57057945
大小:117.00 KB
页数:15页
时间:2020-07-30
《JAVA面向对象_阮卫_第12章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java反射机制目标理解Java反射机制应用Java反射API什么是反射在运行时加载、探知、使用编译期间完全未知的classes允许运行中的Java程序对自身进行“自审”Class类反射的起源当类加载以后,JVM便自动产生一个Class对象使用该对象就可以获取一个类中的方法、成员以及构造方法的声明和定义等信息反射API反射API用于反应在当前Java虚拟机中的类、接口或者对象信息功能—获取一个对象的类信息.—获取一个类的访问修饰符、成员、方法、构造方法以及超类的信息.—检获属于一个接口的常量和方法声明.—创
2、建一个直到程序运行期间才知道名字的类的实例.—获取并设置一个对象的成员,甚至这个成员的名字是在程序运行期间才知道.—检测一个在运行期间才知道名字的对象的方法使用Reflectionjava.lang.relfect包遵循三个步骤第一步是获得你想操作的类的java.lang.Class对象第二步是调用诸如getDeclaredMethods的方法第三步使用reflectionAPI来操作这些信息获得一个Class对象如果一个类的实例已经得到,你可以使用【Classc=对象名.getClass();】例:T
3、extFieldt=newTextField();Classc=t.getClass();Classs=c.getSuperclass();如果你在编译期知道类的名字,你可以使用如下的方法Classc=java.awt.Button.class;或者Classc=Integer.TYPE;如果类名在编译期不知道,但是在运行期可以获得,你可以使用下面的方法Classc=Class.forName(strg);简单示例importjava.lang.reflect.*;publicclassSearchMethod
4、s{publicstaticvoidmain(Stringargs[]){try{Classc=Class.forName(args[0]);Methodm[]=c.getDeclaredMethods();for(inti=0;i5、ass[] params) --获得使用特殊的参数类型的公共构造函数•Constructor[] getConstructors() --获得类的所有公共构造函数•Constructor getDeclaredConstructor(Class[] params) --获得使用特定参数类型的构造函数(与接入级别无关)•Constructor[] getDeclaredConstructors() --获得类的所有构造函数(与接入级别无关)应用反射API2.获取类定义变量•Field getField(Strin6、g name) --获得命名的公共字段•Field[] getFields() --获得类的所有公共字段•Field getDeclaredField(String name) --获得类声明的命名的字段•Field[] getDeclaredFields() --获得类声明的所有字段3.获取类定义方法•Method getMethod(String name, Class[] params) --使用特定的参数类型,获得命名的公共方法•Method[] getMethods() --获得类的所有公共方法•Me7、thod getDeclaredMethod(String name, Class[] params) --使用特写的参数类型,获得类声明的命名的方法•Method[] getDeclaredMethods() --获得类声明的所有方法应用反射API创建对象获取构造器信息找出类的方法获取类的字段根据方法的名称来执行方法实例:利用反射动态实例化对象1定义一个类的配置文件如下:实例:利用反射动态实例化对象2新建一个Account帐号类如下:实例:利用反射动态实例化对象3新建一个反射工具类实例化Account,并调用8、SET方法注入参数如下:实例:利用反射动态实例化对象4新建一个测试方法如下:
5、ass[] params) --获得使用特殊的参数类型的公共构造函数•Constructor[] getConstructors() --获得类的所有公共构造函数•Constructor getDeclaredConstructor(Class[] params) --获得使用特定参数类型的构造函数(与接入级别无关)•Constructor[] getDeclaredConstructors() --获得类的所有构造函数(与接入级别无关)应用反射API2.获取类定义变量•Field getField(Strin
6、g name) --获得命名的公共字段•Field[] getFields() --获得类的所有公共字段•Field getDeclaredField(String name) --获得类声明的命名的字段•Field[] getDeclaredFields() --获得类声明的所有字段3.获取类定义方法•Method getMethod(String name, Class[] params) --使用特定的参数类型,获得命名的公共方法•Method[] getMethods() --获得类的所有公共方法•Me
7、thod getDeclaredMethod(String name, Class[] params) --使用特写的参数类型,获得类声明的命名的方法•Method[] getDeclaredMethods() --获得类声明的所有方法应用反射API创建对象获取构造器信息找出类的方法获取类的字段根据方法的名称来执行方法实例:利用反射动态实例化对象1定义一个类的配置文件如下:实例:利用反射动态实例化对象2新建一个Account帐号类如下:实例:利用反射动态实例化对象3新建一个反射工具类实例化Account,并调用
8、SET方法注入参数如下:实例:利用反射动态实例化对象4新建一个测试方法如下:
此文档下载收益归作者所有