Ответ 1
В общем случае вы не можете сделать это, поскольку equals находится в Object, возьмите, например,
mysession.getAttribute( "SomeObject" ). Равно (Foo)
Невозможно обнаружить, что этот объект является вашим типом класса.
У меня есть класс, который переопределяет equals(), и я хочу посмотреть, где этот метод equals используется в рабочей области. Используя Eclipse, я обычно делаю Ctrl-Shift-g, который находит все ссылки в рабочей области. К сожалению, для equals() его отведение каждой ссылки на equals в моей рабочей области из любого типа, а не только того, где я его переопределил, и его невозможно определить, какой из многих результатов имеет отношение к моему поиску. Я хочу сделать это?
EDIT: уточнить. У меня есть класс A, который переопределяет метод equals. У меня есть класс B (и другие), которые используют класс A, но не расширяют его. Я хочу найти, какие классы в моей рабочей области используют метод равных классов класса А, независимо от того, принадлежат ли они иерархии классов А, например, класса В.
В общем случае вы не можете сделать это, поскольку equals находится в Object, возьмите, например,
mysession.getAttribute( "SomeObject" ). Равно (Foo)
Невозможно обнаружить, что этот объект является вашим типом класса.
Пусть ваша реализация equals временно бросает класс Throwable: equals(Object obj) throws Throwable
.
Конечно, это даст вам ошибку компиляции для вашей реализации equals, потому что она не совместима с Objects.equals()
, однако вы также получите ошибку компиляции во всех классах, которые используют ваш метод equals (по крайней мере, все классы, которые делают не обрабатывать/бросать Throwable сами):
Необработанный тип исключения Throwable
Создайте копии основного интерфейса, класс с другим именем. Внедрение/расширение из этого нового интерфейса/класса. Затем найдите ссылки на свой метод с помощью Ctrl + Shift + G.
Работал для меня, когда сталкивался с той же ситуацией.
Щелкните правой кнопкой мыши свой метод equals и выберите опцию
References--> Hierarchy