我有一个包含很多课程的庞大项目。我有一个非常具体的课程;让我们命名它SuperFoo
。我需要找到对该方法的所有调用equals()
带类型参数Superfoo
。希望它是清楚的。
所以,再一次......在数千个java文件(或字节码?)中我想找到对该方法的所有调用java.lang.Object.equals(Object arg)
但此调用的参数必须是类型SuperFoo
。例如:
public void doItWith(SuperFoo foo) {
if (otherFoo.equals(foo)){
// do something
}
...
}
我检查了按查询浏览、分析字节码以及 Eclipse 中的 Java 搜索,但我认为这些都不起作用。
一种编程方法是使用面向方面的编程 http://en.wikipedia.org/wiki/Aspect-oriented_programming (i.e. AspectJ http://eclipse.org/aspectj/)。您可以定义一个切入点来捕获感兴趣的方法调用
pointcut equals(Superfoo o) = call(boolean *.equals(Object)) && args(o);
然后使用建议选择每个事件并查询连接点对象以获取静态信息,即它出现在代码中的位置。
before(Superfoo o) : equals(o) {
System.out.println("An occurence at "+thisJoinPoint.getSourceLocation());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)