ある程度信頼できる Java コードを呼び出す必要があり、そのコードの実行中にリフレクションを使用する機能を無効にしたいと考えています。
try{
// disable reflection somehow
someObject.method();
}
finally{
// enable reflection again
}
これは SecurityManager で行うことができますか?
明確化/コンテキスト:これは、 JavaScript/Rhino から呼び出すことができるパッケージの制限に関する別の質問へのフォローアップです。受け入れられた回答は、その方法に関するブログ エントリを参照しており、2 つの手順が必要です。最初の手順は Rhino API (ClassShutter) を使用し、2 番目の手順はリフレクションと Class.forName() をオフにします。私は、SecurityManager を使用してその 2 番目のステップをよりクリーンに実行できると考えていました (指摘されているように、途中で複雑な獣である SecurityManager について学ぶこと)。
要約すると、(ファイルを設定するのではなく、コードから) Class.forName() とリフレクション パッケージ全体へのアクセスをオフにする必要があります。