我试图通过反射获取布尔变量的值,但最终得到IllegalArgumentException
。
Test c = new Test();
Class clazz = c.getClass();
java.lang.reflect.Field field = clazz.getDeclaredField("flag");
field.setAccessible(true);
Object val = field.get(clazz);
这是Test
类:
public class Test {
private boolean flag;
}
我最终得到错误堆栈跟踪
java.lang.IllegalArgumentException: Can not set boolean field com.Test.flag to java.lang.Class
有人可以解释它出错的地方。
答案 0 :(得分:4)
你应该从OBJECT获得这个字段,而不是CLASS ......
Object val = field.get(c);
答案 1 :(得分:0)
您需要将field.get(clazz)
更改为field.get(c)
。