有兴趣的老手吗?反射相关的问题
java吧
全部回复
仅看楼主
level 4
lqscjnd 楼主
public class ReflectDemo{
public static void main(String[] args) throws Exception{
//通过Class方法获得类文件
Class clazz = Class.forName("day28.Persons");//该行没有问题,Class方法的确得到了Person.Class的对象
//通过方法获得私有字段
Field fi = null;
fi = clazz.getDeclaredField("age");//获得名为age的字段(属性);
//获得类的对象,以方便调用字段
Object obj = clazz.newInstance();
//取消权限检查
fi.setAccessible(true);
//获得对象obj中的age;
Object o = fi.get(obj);
fi.set(obj, 24);
System.out.println(fi.getInt(obj));
System.out.println(o);
}
输出结果为
24
0
为什么直接输出o值为0,醉了·····
2017年12月29日 11点12分 1
level 4
lqscjnd 楼主
其中Persons类 仅仅用eclipse导入了set和get方法,自动重写了toString方法。
2017年12月29日 11点12分 2
level 12
get在前
set在后
自然为0 24了
2017年12月29日 11点12分 3
level 12
楼上正解
2017年12月29日 12点12分 4
level 8
赋值并不是引用了地址,同楼上,先取值了再赋值
2017年12月29日 15点12分 5
level 4
堆和栈的经典错误~
2017年12月29日 16点12分 6
1