Pracuję nad projektem, który używa refleksji, aby uzyskać pola uruchomionej aplikacji java.Java reflection question
Udało mi się zdobyć pola, ale nie mogę ich odczytać ani napisać. To jest przykład znalazłem w internecie:
Class aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);
Problemem jest to, że mogę użyć klas z uruchomionego pliku jar i klasy I próbować manipulować uzyskuje się z classloader. Więc zamiast "MyObject.class" po prostu mam ".class". Aby uzyskać "MyObject" próbowałem użyć ClassLoader, ale to nie zadziałało.
Gdybym po prostu użyć”.class':
Object value = field.get(theLoadedClass);
będę się ten błąd:
java.lang.IllegalArgumentException: Can not set int field myClass.field to java.lang.Class
Dzięki.
Co masz na myśli mówiąc "działający plik jar"? Czy to jest na twojej ścieżce klasowej? – wjans