---------- android培训 java培训 期待与您交流!------------
Reflection
反射:动态获取类的信息,以及动态的调用类的方法
(就是把java类中的各种成分映射成为相应的java类)
JAVA反射机制主要提供了以下功能:
1.在运行时判断任意一个对象所属的类
2.在运行时构造任意一个类的对象
3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)
4.在运行时调用任意一个对象的方法(*****注意:前提都是在运行时,而不是在编译时)
Java 反射相关的API简介:
位于java。lang。reflect包中
--Class类:代表一个类,描属性述了Java类的名字,类的访问属性类的包名,字段名称的列表,方法名称 的列表
得到一个字节码对应的实例对象:
--对象.class
--getClass();
--Class.forName("类名");
--Filed类:代表某个类的成员变量
得到某个代表某个类的成员变量代码如下:
Filed filed = 类的字节码.getFiled();
取出的是这个类中的变量,最有还应该:
filed.get(对象);
filed不是对象身上的变量,而是类上要用它去取某个对象上对应的值。
对于访问类中私有的变量可以使用:
Filed filed = 类的字节码.getDeclaredField("变量的名字");
然后将这个变量的访问权限给为true;
filed.setAccessible(true);
最后在调用filed的get(),就可以取出了
filed.get(对象);
--Method类:代表某个类中的成员方法
得到某个类中的成员方法代码如下:
Method method = 类的字节码.getMethod(方法名,参数的字节码对象);
得到了方法以后使用invoke()调用:
method.invoke(对象,参数);
如果对象为null,则代表着这个方法是静态方法。
--Constructor类:代表某个类中的构造方法
得到某个类中的构造方法代码如下:
Constructor con = 类.class.getConstructor(参数类型的字节码);
那么得到了某个类中的构造方法就可以new一个对象:
con.newInstance(参数);
--Array类:提供了动态创建数组,以及访问数组的元素的静态方法。该类中的所有方法都是静态方法
---------- android培训 java培训 期待与您交流!------------
详情请点击:http://edu.csdn.net/