有没有办法使用Eclipse列出某个类的equals()的所有调用?

Har*_*man 8 java eclipse class equals

我目前面临以下问题:

我有一个类,其中equals() - 方法被覆盖.但是我不确定它是否曾被使用过(无论是在我的同事还是在我的同事项目中).有没有办法找出来?当我搜索引用时,它只是给了我对Object equals() - Method(很多)的所有引用.肯定必须有一种比扫描所有这些更简单的方法......

有人有个主意吗?

aio*_*obe 5

你要求Eclipse解决一个不可能完成的任务.

要确定是否调用了特定的重写方法,并不是静态可判定的,这就是Eclipse过度接近响应的原因.

假设你有一些领域Object o,你在某些时候做o.equals(...).要确定是否o可以引用YourClass对象,需要确定o沿着每个可能的执行路径的运行时类型,这不能静态完成.

它不可能的原因与编译器拒绝以下代码的原因非常相似:

Object o = "hello";
System.out.println(o.length());
Run Code Online (Sandbox Code Playgroud)

您可以做的最好的事情可能是通过设置断点或在equals方法中抛出例如UnsupportedOperationException来调试程序.


NPE*_*NPE 2

我想不出一种可以纯粹通过静态分析可靠地完成此操作的方法(我怀疑是否存在)。

可能有用的实用方法是在方法的第一行设置断点equals(),然后在 Eclipse 调试器中启动程序。每当调用该方法时,Eclipse 都会进入调试器。此时,您将能够检查调用堆栈以查看谁调用了该方法。

为了有效地做到这一点,您必须了解哪些代码路径可以调用该方法。如果您无法触发该方法,这并不能证明没有人使用它。

  • 然后什么?在调试模式下执行_所有可能的代码路径_? (2认同)