如何防范 IllegalAccessException?

How to protect against the IllegalAccessException?

我研究了以下 JDK 方法:

java.lang.reflect.Field#get

如果基础字段不可访问,它会抛出 IllegalAccessException

我说得对吗,如果我添加以下行,我可以保护我的代码免受异常影响

field.setAccessible(true);

?

还有其他方法可以得到这个异常吗?

是的,您说得对,您可以通过这种方式保护您的代码,但是,我建议您按以下方式进行:

Field field = ...;
boolean accessible = field.isAccessible();
field.setAccessible(true);
//Your code
field.setAccessible(accessible);

使用上述方法只是为了安全起见,例如,假设您使用一些 API 取决于可访问或不可访问的字段,那么 API 不会如果您不将字段设置回其原始状态,则可以正常工作。