黑马程序员技术交流社区
标题:
关于反射部分的心得
[打印本页]
作者:
huangjinlangzi
时间:
2015-6-12 10:51
标题:
关于反射部分的心得
我觉的对于反射部分只要弄懂以下几个步骤上就可以了:
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,参数列表);
作者:
huangjinlangzi
时间:
2015-6-12 10:55
我觉的对于反射部分只要弄懂以下几个步骤上就可以了:
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,参数列表);
之前排版有点小错误,抱歉!
作者:
itheima_llt
时间:
2015-6-12 11:36
总结的很好啊,加点示例就更专业了,可以做博客了
作者:
hi潘
时间:
2015-6-12 21:28
讲的挺详细的,复习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2