gpt4 book ai didi

java - 查找java类中所有对方法的调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:52 26 4
gpt4 key购买 nike

我有一个包含很多类的庞大项目。我有一个非常具体的类(class);我们将其命名为 SuperFoo。我需要找到对方法 equals() 的所有调用,参数类型为 Superfoo。希望一切都清楚。

所以,再一次......在数千个 java 文件(或字节码?)中,我想找到对方法 java.lang.Object.equals(Object arg) 的所有调用但此调用的参数必须是 SuperFoo 类型。例如:

public void doItWith(SuperFoo foo) {
if (otherFoo.equals(foo)){
// do something
}
...
}

我检查了按查询浏览、分析字节码和 Eclipse 中的 Java 搜索,我认为这些都不起作用。

最佳答案

编程方法是使用 Aspect Oriented Programming (即 AspectJ )。您将定义一个切入点来捕获感兴趣的方法调用

pointcut equals(Superfoo o) = call(boolean *.equals(Object)) && args(o);

然后使用通知来选择每个事件并查询连接点对象以获取静态信息,即它出现在您的代码中的位置。

before(Superfoo o) : equals(o) {
System.out.println("An occurence at "+thisJoinPoint.getSourceLocation());
}

关于java - 查找java类中所有对方法的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16996988/

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