У меня есть сценарий, в котором я хочу запустить код, который я не контролирую. Я хочу предотвратить использование в этом коде произвольных стандартных методов JDK (например, я хочу запретить использование метода lastIndexOf () для любых объектов String).
Если используется запрещенный метод, это должно привести к исключению времени выполнения.
Я подозреваю, что это могло бы быть возможно с пользовательским загрузчиком классов, но я не уверен, как подойти к этому. Часть проблемы, с которой я столкнулся, заключается в том, что String - последний класс, который нельзя расширять.
Пример:
//I control this code
int result = SomeClass.method("foo") //I don't control SomeClass
//A valid implementation of SomeClass.method()
int method(String in) {return 1;}
//An invalid implementation of SomeClass.method()
int method(String in) {return in.lastIndexOf("o");}
//the above should throw an error at run time when called from my code