我想了解在哪些條件下調用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