我不完全理解以下代码的最后一行
Field init = ReflectionUtils.findField(ABCClass.class, "init");
ReflectionUtils.makeAccessible(init);
init.set(null, false);
我所理解的是,它使用反射 API 设置 AbcClass.init=false。我不明白的是为什么我们没有像这样的二传手
set(Object value) // looks logical as we have reference to field , we can simply set the value
但相反,我们有类似的东西
set(Object obj,Object value)
我浏览了 api 文档http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Field.html#set(java.lang.Object , java.lang.Object) 它说
如果底层字段是静态的,则忽略 obj 参数;它可能为空。
否则,基础字段是实例字段。如果指定的对象参数为 null,则该方法将引发 NullPointerException。
但在我的测试用例中,它没有抛出任何空指针异常
我试着在谷歌上搜索这个 api 的更多示例用法,没有找到任何有用的示例,可能更多示例可以帮助我更好地理解。