黑马程序员技术交流社区
标题:
如何用反射对成员变量赋值?如何用反射调用构造方法并对其中变量赋值?
[打印本页]
作者:
亚男
时间:
2012-4-6 08:31
标题:
如何用反射对成员变量赋值?如何用反射调用构造方法并对其中变量赋值?
最好把代码也弄出来看看,方便理解
作者:
宋蕈
时间:
2012-4-6 08:58
得到各个字节码对应的实例对象(class):
-类名.class
-对象.getClass()
-Class.forName("完整类名")
在得到的Class对象里 可调用相应的 getField() / getDeclaredField()
getConstructor() 方法 ,给相应的参数 就能得到相应的成员变量和构造方法
具体的还要你去看API
作者:
李震 李震 李震
时间:
2012-4-6 11:00
public static void main(String[] args) throws Exception {
//通过calss获取类路径,获取空构造函数
Constructor<?> clazz=Class.forName("itcast.javabean.Person").getConstructor();
Person person=(Person) clazz.newInstance();//实例化对象
//Person person = (Person) Class.forName("itcast.javabean.Person").newInstance();
Field fieldName = person.getClass().getDeclaredField("name");//获取bean里的对象名
fieldName.setAccessible(true);//因为我的对象名定义的是私有的只能强制取出来,就是暴力反射
fieldName.set(person, "lizhen");
Field fieldAge = person.getClass().getDeclaredField("age");
fieldAge.setAccessible(true);
fieldAge.set(person, 22);
System.out.println(fieldName.get(person));
System.out.println(fieldAge.get(person));
changeValue(person);
System.out.println(person.getName() + person.getAge());
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2