9 Stimmen

Frage zur Java-Reflexion

Ich arbeite an einem Projekt, das Reflection verwendet, um die Felder einer laufenden Java-Anwendung zu erhalten.

Es ist mir gelungen, die Felder zu erhalten, aber ich kann sie nicht lesen oder beschreiben. Dies ist ein Beispiel, das ich im Internet gefunden habe:

Class aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);

Das Problem ist, dass ich Klassen aus einer laufenden Jar-Datei verwenden, und die Klassen, die ich versuche, zu manipulieren sind aus dem classLoader erhalten. Anstelle von "MyObject.class" habe ich also nur die ".class". Um das "MyObject" zu erhalten, habe ich versucht, einen ClassLoader zu verwenden, aber das hat nicht funktioniert.

Wenn ich nur '.class' verwende:

Object value = field.get(theLoadedClass);

Ich erhalte diese Fehlermeldung:

java.lang.IllegalArgumentException: Can not set int field myClass.field to java.lang.Class

Gracias.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X