繁体   English   中英

如何防止使用任意方法,例如String.lastIndexOf()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM