我正在开发一个使用反射来获取正在运行的java应用程序的字段的项目.
我设法得到了字段,但我无法读取或写入它们.这是我在网上找到的一个例子:
Class aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);
Run Code Online (Sandbox Code Playgroud)
问题是我使用运行的jar文件中的类,我尝试操作的类是从classLoader获得的.因此,我只是拥有'.class'而不是'MyObject.class'.为了获得'MyObject',我尝试使用ClassLoader,但这不起作用.
如果我只使用'.class':
Object value = field.get(theLoadedClass);
Run Code Online (Sandbox Code Playgroud)
我会收到这个错误:
java.lang.IllegalArgumentException: Can not set int field myClass.field to java.lang.Class
Run Code Online (Sandbox Code Playgroud)
谢谢.