1 / 21
文档名称:

java反射.ppt

格式:ppt   大小:401KB   页数:21页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java反射.ppt

上传人:jinyuan6900 2018/6/1 文件大小:401 KB

下载得到文件列表

java反射.ppt

相关文档

文档介绍

文档介绍:Java反射与动态代理
Java Reflaction
可以于运行时加载、探知、使用编译期间完全未知的classes
Java反射机制提供的功能
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
Java反射机制研究及应用
反射
反射主要的类:
:代表一个类
:代表类的方法
:代表类的成员变量
:代表类的构造方法
检查运行时对象
通过对象的getClass方法,获得Class对象
getName():获得类的完整名字。
getFields():获得类的public类型的属性。
getDeclaredFields():获得类的所有属性。
getMethods():获得类的public类型的方法。
getDeclaredMethods():获得类的所有方法。
Java反射机制
Java Reflection API 简介
getMethod(String name, Class[] parameterTypes):获得类的特定方法,name参数指定方法的名字,parameterTypes 参数指定方法的参数类型。
getConstructors():获得类的public类型的构造方法。
getConstructor(Class[] parameterTypes):获得类的特定构造方法,parameterTypes 参数指定构造方法的参数类型。
newInstance():通过类的不带参数的构造方法创建这个类的一个对象。
Java Reflection API 简介
2)通过默认构造方法创建一个新对象:
Object objectCopy=(new Class[]{}).newInstance(new Object[]{});
以上代码先调用Class类的getConstructor()方法获得一个Constructor 对象,它代表默认的构造方法,然后调用Constructor对象的newInstance()方法构造一个实例。
Java Reflection API 简介
(3)获得对象的所有属性:
Field fields[]=();
Class 类的getDeclaredFields()方法返回类的所有属性,包括public、protected、默认和private访问级别的属性
Java Reflection API 简介
Method addMethod=("add",new Class[]{,});
Method类的invoke(Object obj,Object args[])方法接收的参数必须为对象,如果参数为基本类型数据,必须转换为相应的包装类型的对象。invoke()方法的返回值总是对象,如果实际被调用的方法的返回类型是基本类型数据,那么invoke()方法会把它转换为相应的包装类型的对象,再将其返回
Java Reflection API 简介
在本例中,尽管InvokeTester 类的add()方法的两个参数以及返回值都是int类型,调用add Method 对象的invoke()方法时,只能传递Integer 类型的参数,并且invoke()方法的返回类型也是Integer 类型,Integer 类是int 基本类型的包装类:
Object result=(invokeTester,
new Object[]{new Integer(100),new Integer(200)});
((Integer)result); //result 为Integer类型
动态访问对象的字段—Field提供了
(Object)方法,获得特定对象的某个字段的值
(Object, XXX)来设置特定对象的个字段的值
以上XXX表示数据类型
Java反射机制