我正在使用一些注释来动态设置类中字段的值。由于我想不管其访问级别(public,protected或private),都要执行此操作,因此在调用set()
方法之前,每次都会对Field对象调用setAccessible(true)
。那么问题来了,setAccessible()
调用对该字段本身有什么影响?
更具体地说,假设它是一个私有字段,这组代码调用了setAccessible(true)
。如果代码中的其他地方随后通过反射检索相同的字段,那么该字段是否已经可访问?还是getDeclaredFields()
和getDeclaredField()
方法每次返回Field对象的新实例?
我猜另一种陈述问题的方式是,如果我调用了setAccessible(true)
,那么将其恢复为原始值结束时有多重要?
throws Exception
也可以处理NoSuchFieldException
,但你可能想以更详细的方式处理它。 - Moritz Petersen