我读了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#getIntObject参数必须是class A的实例。

A a = new A();
int y = testnum.getInt(a);


由于namenumber字段不是静态的,因此无法从类中获取它们。您必须从类的特定实例中获取它们。

10-05 19:38