我需要调用一些半可信的 Java 代码,并希望在该代码执行期间禁用使用反射的能力。
try{
// disable reflection somehow
someObject.method();
}
finally{
// enable reflection again
}
这可以用 SecurityManager 来完成吗?如果可以,怎么做?
澄清/上下文:这是关于限制可以从 JavaScript/Rhino 调用的包的另一个问题的后续。接受的答案引用了一篇关于如何做到这一点的博客条目,它需要两个步骤,第一个步骤使用 Rhino API (ClassShutter),第二个步骤关闭反射和 Class.forName()。我在想我可以使用 SecurityManager 更干净地完成第二步(学习 SecurityManager,正如已经指出的那样,这是一个复杂的野兽,一路走来)。
总而言之,我希望(从代码,而不是设置文件)关闭 Class.forName() 以及对整个反射包的任何访问。