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

时间:2013-06-08 07:02:56

标签: java eclipse methods reference

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

那么,还有一次......在成千上万的java文件(或字节码?)中我想找到对方法java.lang.Object.equals(Object arg)的所有调用,但是这个调用的参数必须是{{1}类型}}。例如:

SuperFoo

我检查了逐个浏览,分析字节码和Eclipse中的Java搜索,在我看来,这一切都没有。

2 个答案:

答案 0 :(得分:1)

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

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

然后使用建议选择每个匹配项并查询joinpoint对象以获取静态信息,即它出现在代码中的位置。

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

答案 1 :(得分:0)

所以,你试图找出

的引用
public boolean equals(Object o) 

在SuperFoo中重写。如果您有权访问源代码,可以在eclipse中完成。如果你去调用Hierarchy,eclipse会返回Object的equals()方法的所有出现。因此,您需要尝试以下方法:

打开SuperFoor。选择equals方法。右键点击。参考文献 - >项目。在结果搜索窗口的最右侧,单击三角形。选择“覆盖参考”。而已。最初返回的结果将被过滤, 包含在SuperFoo中重写的等号引用。

希望这有帮助。