gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 00:54:07 27 4
gpt4 key购买 nike

我有一个场景,我想运行我无法控制的代码。我想防止在该代码中使用任意标准 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

最佳答案

我记得我写了一个自定义的 findbugs 检测器来查找特定的方法调用。在我的例子中,它也分析了它的参数,但看起来你的例子有点简单。

或者,您可以使用 ASM 库。

最简单的做法是,您可以使用 javap 反汇编该类并 grep 输出。

关于java - 如何防止使用任意方法,例如 String.lastIndexOf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54308956/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com