我一直在玩反思Java ...我有点困惑。IllegalArgumentException当设置公共成员
我希望下面的程序能让我改变一个类中公共成员变量的值。但是,我收到一个IllegalArgumentException。有任何想法吗?
public class ColinTest {
public String msg = "fail";
public ColinTest() { }
public static void main(String args[]) throws Exception {
ColinTest test = new ColinTest();
Class c = test.getClass();
Field[] decfields = c.getDeclaredFields();
decfields[0].set("msg", "success");
System.out.println(ColinTest.msg)
}
}
我收到此消息 -
Exception in thread "main" java.lang.IllegalArgumentException
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
at java.lang.reflect.Field.set(Field.java:656)
at ColinTest.main(ColinTest.java:44)
感谢。
如果您打算在将来添加更多字段,请注意使用`decFields [0]`! – toolkit 2009-05-28 09:50:37