通过Java Reflection检索布尔变量的值

时间:2017-10-14 23:29:26

标签: java reflection

我试图通过反射获取布尔变量的值,但最终得到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

有人可以解释它出错的地方。

2 个答案:

答案 0 :(得分:4)

你应该从OBJECT获得这个字段,而不是CLASS ......

Object val = field.get(c);

答案 1 :(得分:0)

您需要将field.get(clazz)更改为field.get(c)