我使用一些注释来动态设置类中字段的值。因为不管它是公共的、受保护的还是私有的,我都想这样做,所以每次在调用 set()
方法之前,我都在调用 Field 对象上的 setAccessible(true)
。我的问题是 setAccessible()
调用对场地本身有什么样的影响?
更具体地说,假设它是一个私有字段,这组代码调用 setAccessible(true)
。如果代码中的其他位置通过反射检索相同的字段,该字段是否已经可访问?或者 getDeclaredFields()
和 getDeclaredField()
方法每次返回 Field 对象的新实例?
我想另一种说明这个问题的方法是,如果我调用 setAccessible(true)
,在我完成之后将它设置回原始值有多重要?