我一直在玩反思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