今天在写一个反射程序的时候遇到这样一个情况:我在GetPerson类中用反射的方法调用Person类的成员变量x(int),打印是正确的,然后在GetPerson类中定义了成员变量y(int),用同样的方法却不能获取,不知道为什么,求教!!!
public class Person {
int x = 1;
}
public class GetPerson {
int y = 2;
public static void main(String[] args) throws Exception {
Person p = new Person();
Field f = p.getClass().getField("x");
//这里打印的结果为1
System.out.println(f.get(p));
GetPerson gp = new GetPerson();
Field f1 = gp.getClass().getField("y");
//这里会有异常,java.lang.NoSuchFieldException: x
System.out.println(f1.get(gp));
}
为什么呢?难道不能访问自己类的成员变量吗?
|