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