如何在Eclipse的工作区中找到equals()的类型特定引用?

Chr*_*ght 14 java eclipse search reference

我有一个覆盖equals()的类,我想看看这个 equals方法在工作区中的使用位置.使用Eclipse,我通常会使用Ctrl-Shift-g查找工作区中的所有引用.不幸的是,对于equals(),它会从我的工作空间中撤回任何类型的每个equals引用,而不仅仅是我已经覆盖它的那个,并且无法确定哪些结果与我的搜索相关.我想做什么?

编辑:澄清.我有一个覆盖equals方法的A类.我有一个B类(和其他人)使用 A类但不扩展它.我想找到我的工作区中哪些类使用Class A的equals方法,无论它们是否属于Class A的层次结构,如B类.

Dom*_*nic 15

让你的equals实现暂时抛出类Throwable : equals(Object obj) throws Throwable.

当然这会给你的equals实现一个编译错误,因为它与它不兼容Objects.equals(),但是你也会在使用你的equals方法的所有类中得到一个编译错误(至少所有不处理的类/抛出Throwable自己):

未处理的异常类型Throwable


MeB*_*Guy 3

一般来说,你不能这样做,因为 equals 是在对象上,例如

mysession.getAttribute("someobject").equals(foo)

无法检测到该对象是您的类类型。

  • 我不同意“接受的答案”。显然,“潜在匹配”可能会被忽略,并且您不会得到 100% 正确的答案。但对于许多程序员来说,找到“明确的匹配”是非常有用的。目前,在 Eclipse 中不可能只找到被覆盖函数的明确匹配(但 Eclipse 会找到对 Object.equals() 的所有引用)。我认为这至少是糟糕的设计,甚至可能是一个错误。 (2认同)