我读了this帖子,并在那儿跟随了guidelines
。但这没有帮助;当该字段存在时,我得到NoSuchFieldException
。示例code
如下:
这是我的代码:
class A{
private String name="sairam";
private int number=100;
}
public class Testing {
public static void main(String[] args) throws Exception {
Class cls = Class.forName("A");
Field testnum=cls.getDeclaredField("number");
testnum.setAccessible(true);
int y = testnum.getInt(testnum);
System.out.println(y);
}
}
编辑:下面的每个答案,我试过了:
Class cls = Class.forName("A");
Field testnum=cls.getDeclaredField("number");
testnum.setAccessible(true);
A a = new A();
int y = testnum.getInt(a);
System.out.println(y);
但错误是相同的
最佳答案
Field#getInt的Object
参数必须是class A
的实例。
A a = new A();
int y = testnum.getInt(a);
由于
name
和number
字段不是静态的,因此无法从类中获取它们。您必须从类的特定实例中获取它们。