Javaでリフレクションをしています...私はちょっと困惑しています。publicメンバーを設定するとIllegalArgumentExceptionが発生する
私は、以下のプログラムでクラス内のパブリックメンバー変数の値を変更できることを期待していました。しかし、私はIllegalArgumentExceptionを受け取ります。何か案は?
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)
おかげ -
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)
}
}
私はこのメッセージが表示されます。
今後さらにフィールドを追加する予定がある場合は、 'decFields [0]'を使用してください。 – toolkit