我觉的对于反射部分只要弄懂以下几个步骤上就可以了:
1、 获取类的Class对象,有三种方法;
1)、Class clazz = Class.forName(完整类名); 比较常用
2)、Class clazz = 类名.class;
3)、Object obj = new 类名();
Class clazz = obj.class;
2、实例化指定类,获取对象
1)、指定类有空参数构造函数
Object obj = clazz.newInstance();
2)、指定类无空参数构造函数
//先反射出构造函数
Constructor con = clazz.getConstructor(参数列表.class)
Object obj = con.newInstance(参数列表);
3)、反射成员变量
Field field= clazz.getField(变量名);
Field field = clazz.getDeclaredField(变量名); 获取本类中的私有变量
field.setAccessible(true); //暴力反射,反射出私有变量
field.get(obj);
4)、反射成员方法
Method method = clazz.getMethod(方法名,参数列表.class);
Method method = clazz.getDeclaredMethod(方法名,参数列表.class);
method.setAccessible(true);
method.invoke(obj,参数列表); |
|