Заставить класс переопределить метод .equals - PullRequest
51 голосов
/ 23 октября 2009

У меня есть группа классов, которые реализуют общий интерфейс: Command.

И эта группа классов идет на Карту.

Чтобы карта работала правильно, мне нужно, чтобы каждый класс, реализующий Command, переопределил метод Object.equals(Object other).

все хорошо.

Но я бы хотел форсировать равных. => Ошибка компиляции, когда что-то, кто реализует команду dont override, равно.

Это возможно?

Редактировать: Кстати, мне также нужно принудительно переопределить хэш-код ...

Ответы [ 12 ]

0 голосов
/ 23 октября 2009

Я не думаю, что можно принудительно перекрывать равные, как это происходит из класса Object.

В связанной заметке обратите внимание, что вам нужно переопределить метод hashCode из класса Object, когда вы переопределяете equals. Это становится особенно важным, если вы собираетесь использовать экземпляры ваших классов в качестве ключей карты. Проверьте эту статью: http://www.artima.com/lejava/articles/equality.html который дает некоторые советы о том, как корректно переопределить equals

0 голосов
/ 23 октября 2009

Поскольку equals() унаследовано от Object Я сомневаюсь, что вы не сможете на самом деле форсировать это, поскольку для для каждого типа доступна автоматическая наследуемая реализация equals().

...