Мне нужно вызвать некоторый полунадежный Java-код и вы хотите отключить возможность использования отражения в течение всего времени выполнения этого кода.
try{
// disable reflection somehow
someObject.method();
}
finally{
// enable reflection again
}
Можно ли это сделать с помощью SecurityManager, и если да, то как?
Разъяснение/Контекст: Это следующий вопрос другого вопроса об ограничении пакетов, которые можно вызывать из JavaScript/Rhino. Принятый ответ ссылается на запись в блоге о том, как это сделать, и для этого требуется два шага, первый из которых использует Rhino API (ClassShutter), второй - отключение отражения и Class.forName(). Я думал, что могу сделать этот второй шаг более чистым, используя SecurityManager (узнав о SecurityManager, который, как было указано, является сложным зверьком, на этом пути).
Подводя итог, я хочу (из кода, а не устанавливать файл) отключить Class.forName() и любой доступ ко всему пакету отражения.