使用反射访问不可见的字段或方法时,更改后恢复原始辅助功能值似乎是一种常见的习惯用法:
Field field = ...
boolean origAccessibility = field.getAccessibility();
field.setAccessibility(true);
try {
// access field
} finally {
field.setAccessibility(origAccessibility);
}
我想知道是否有充分理由恢复原始辅助功能状态。我看到以下情况:
我倾向于认为重置原始状态是没用的。我错过了什么吗?
答案 0 :(得分:3)
不,这不是必需的。
所有field.setAccessible
都会更新您用于处理字段的单个引用(您放在field
局部变量中的字段)。它没有任何持久的影响。下次有人打电话给clazz.getField
或其他什么时,他们会得到一个新的对象(即使在谈论相同的领域时)。