我想了解在哪些条件下调用Method.setAccessible()是允许的。据我了解文档的各个部分,调用setAccessible()会触发SecurityManager中的检查,以查看是否允许更改访问修饰符。什么是默认的ReflectPermissions以及如何更改它们?
鉴于此,我试图找出该权限的默认设置是什么,以及我可以在哪里更改它。在中央的java.policy文件中,没有提到这些权限,也找不到任何其他策略文件生效,而且我也找不到有关SecurityManager可能应用的默认值的任何其他文档。
我试图弄清楚这一点的主要原因是我使用反射来规避访问修饰符。我想知道我要告诉客户我的代码有关如何为他们做这项工作。
任何提示看看或见解如何工作?
您可以从Sun的[安全和权限]页面开始(http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html)。关于suppressAccessChecks的部分反映了权限的部分是〜1/3,这是它检查setAccessible的地方。 – Thomas
@Thomas,是的。但它并不会谈论违约来自哪里,即谁拥有该许可。其余的SecurityManager文档通常谈到如何设置权限和类似的东西,并提到中央java.policy文件。但在我的安装中没有设置ReflectPermissions,所以它必须来自其他地方。 – Jochen