当我使用java反射api时遇到这个异常
java.lang.IllegalArgumentException
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:18)
at java.lang.reflect.Field.get(Field.java:357)
代码:
Field fieldlist[] = TestValue.class.getDeclaredFields();
String result="";
try {
for (int i = 0; i < fieldlist.length; i++) {
Field fld = fieldlist[i];
result += "name = " + fld.getName() + "\n";
fld.setAccessible(true);
result += "value = " + fld.get(this)+ "\n";
System.out.println("Result----->"+result);
}
} catch (SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
最佳答案
只是猜测,但是......该字段的类型与您传递的对象不同。
编辑:您正在获取 TestClass 的字段并使用它们来查找当前对象。
相反,您可以编写以下代码来查找类的字段this
Field fieldlist[] = this.getClass().getDeclaredFields();
关于java - 当我使用 java 反射 api 时出现此异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386221/