对于原始类型,使用反射需注意:
原始类型对应的虚拟机中的class实例和封装类对应的class实例是不相同的。
如:
int
对应的class实例为 int.class
或者 Integer.TYPE
,但是 Integer 对应的 class 实例为 Integer.class
因此,你的代码中要通过反射执行 setIntField(int)时,需要通过以下方式获取 method:
Method method= cls.getMethod("setIntField", int.class);