如何防范 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 不会如果您不将字段设置回其原始状态,则可以正常工作。
我研究了以下 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 不会如果您不将字段设置回其原始状态,则可以正常工作。