黑马程序员技术交流社区

标题: 反射问题 [打印本页]

作者: 散人online    时间: 2013-2-2 11:46
标题: 反射问题
Field fieldAge = p.getClass().getDeclaredField("age");
有个Person类,Person类中有个私有的age属性,
p为类Person中的实例对象.这是我根据视频讲解写的
但是有一点疑惑
得到Person类上私有的age字段
既然是得到Person类上的字段,
为什么是P.class(),而不是Person.class()?

作者: 杨杨    时间: 2013-2-2 12:07
我是这样理解的 你看有没有道理p.class() 根据他的实例找到获取他的类 而Person 就是类本身了获取不了类了
底层的代码 public final native Class<?> getClass();   
作者: 杨浩    时间: 2013-2-2 16:42
Person.class 木有括号。
为什么要从对象获取?因为如果你不知道类的名字呢?如果你现在只有一个对象,那你只能从对象获取,是吧?
作者: 谢波    时间: 2013-2-3 17:53
楼上的说得很对,其实Person.class 和 p.getClass() 都是指的同一个字节码文件
作者: 孔斌    时间: 2013-2-4 11:25
获取字节码有三种方式:
类名.class,例如,System.class
对象.getClass(),例如,new Date().getClass()
Class.forName("类名"),例如,Class.forName("java.util.Date");
如果是同一个类,在内存中只有一份字节码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2