IllegalArgumentException, wenn die Einstellung public-member

Ich habe das Spiel mit reflection in Java... und ich bin ein bisschen ratlos.

Ich hoffe, dass das folgende Programm würde mir erlauben, um den Wert zu ändern, der eine öffentliche member-variable innerhalb einer Klasse. Allerdings bekomme ich eine IllegalArgumentException. Irgendwelche Ideen?

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)
    }
}

Erhalte ich diese Meldung -

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)

Dank.

InformationsquelleAutor colinjwebb | 2009-05-28

Schreibe einen Kommentar