Как найти конкретные ссылки на equals() в рабочей области в Eclipse?

У меня есть класс, который переопределяет equals(), и я хочу посмотреть, где этот метод equals используется в рабочей области. Используя Eclipse, я обычно делаю Ctrl-Shift-g, который находит все ссылки в рабочей области. К сожалению, для equals() его отведение каждой ссылки на equals в моей рабочей области из любого типа, а не только того, где я его переопределил, и его невозможно определить, какой из многих результатов имеет отношение к моему поиску. Я хочу сделать это?

EDIT: уточнить. У меня есть класс A, который переопределяет метод equals. У меня есть класс B (и другие), которые используют класс A, но не расширяют его. Я хочу найти, какие классы в моей рабочей области используют метод равных классов класса А, независимо от того, принадлежат ли они иерархии классов А, например, класса В.

Ответы

Ответ 1

В общем случае вы не можете сделать это, поскольку equals находится в Object, возьмите, например,

mysession.getAttribute( "SomeObject" ). Равно (Foo)

Невозможно обнаружить, что этот объект является вашим типом класса.

Ответ 2

Пусть ваша реализация equals временно бросает класс Throwable: equals(Object obj) throws Throwable.

Конечно, это даст вам ошибку компиляции для вашей реализации equals, потому что она не совместима с Objects.equals(), однако вы также получите ошибку компиляции во всех классах, которые используют ваш метод equals (по крайней мере, все классы, которые делают не обрабатывать/бросать Throwable сами):

Необработанный тип исключения Throwable

Ответ 3

Создайте копии основного интерфейса, класс с другим именем. Внедрение/расширение из этого нового интерфейса/класса. Затем найдите ссылки на свой метод с помощью Ctrl + Shift + G.

Работал для меня, когда сталкивался с той же ситуацией.

Ответ 4

Щелкните правой кнопкой мыши свой метод equals и выберите опцию

References--> Hierarchy