您的位置:首页 > 编程语言 > Java开发

Java基础学习笔记【12】Reflect反射(2)

2015-10-08 18:30 295 查看
使用反射来创建对象
(1)public T newInstance():只能创建非private,无参的构造方法的对象;好比 new 类()
(2)先得到一个构造器,调用构造器里的一个方法, T newInstance(Object... initargs) 、 initargs表示构造器的需要的实际参数
访问私有的成员之前:先设置其为可访问的,AccessibleObject: 表示可访问的对象,是Contructor,Method,Filed的父类;
方法: void setAccessible(boolean flag) :用来设置是否可访问的,若要设置可访问的:obj.setAccessible(true);
反射访问执行获取的方法:
T在这里应该制定其 极限(上限线或下限),反射泛型方法的时候有上限或者下限,应该以限定的最低标准执行例如 T extends Number,其类型上限最高为Number则用Number[].Class
Object invoke(Object obj, Object... args) 对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
(1)参数:obj - 从中调用底层方法的对象,就是要调用该方法的实例对象,静态的直接null args - 用于方法调用的参数
(2)返回: 使用参数 args 在 obj 上指派该对象所表示方法的结果
Array类的静态方法也可以操作数组
使用反射获取字段并且设置值:
设置字段的值:
将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
参数: obj - 底层字段所属的对象(实例对象) value - 正被修改的 obj 的字段的新值
反射获取泛型实际操作中的实例中泛型的具体类型:
当使用泛型作为父类的时候,需要返回T泛型,子类还没有实现不知道T的具体类型不能返回,使用反射可以获取T的类型并且返回
类的构造方法中获取T的类型,因为子类实例化的时候会调用父类的无参数的构造函数
泛型中继承该类的子类实例化的时候,在泛型父类的构造函数中this代表之类的实例
返回值return clz.newInstance();就表示T的实例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: