[英]How do I prevent the use of arbitrary methods, for example String.lastIndexOf()
我有一个场景,我想运行我无法控制的代码。 我想阻止在该代码中使用任意标准JDK方法(例如,我想阻止在任何String对象上使用lastIndexOf()方法)。
如果使用禁用方法,则应导致运行时异常。
我怀疑这可能是自定义类加载器,但我不知道如何处理这个问题。 我遇到的部分问题是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
我建议将Reflection作为一种解决方案,但你想要的是一种解决问题的方法,而不是技术解决方案。
你问题的领域可能比我们在这里讨论的要大得多。
我记得写过一个自定义的findbugs探测器,它寻找特定的方法调用。 在我的情况下,它也分析了它的参数,但看起来你的情况有点简单。
或者,您可以使用ASM库。
最天真的是,您可以使用javap和grep输出来反汇编类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.