Estoy trabajando en un proyecto que utiliza la reflexión para obtener los campos de una aplicación Java en ejecución.Pregunta de reflexión de Java
Logré obtener los campos, pero no puedo leerlos ni escribir en ellos. Este es un ejemplo que encontré en la web:
Class aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);
El problema es que yo uso clases desde un archivo jar correr, y las clases que tratan de manipular se obtienen a partir del cargador de clases. Entonces, en lugar de 'MyObject.class', simplemente tengo '.class'. Para obtener el 'MyObject' traté de usar un ClassLoader pero eso no funcionó.
Si sólo tiene que utilizar' .class':
Object value = field.get(theLoadedClass);
voy a conseguir este error:
java.lang.IllegalArgumentException: Can not set int field myClass.field to java.lang.Class
Gracias.
¿Qué quieres decir con 'a running jar file'? ¿Está en tu classpath? – wjans