Метод Equals в эффективной Java Джошуа Блоха
пожалуйста, посмотрите на это ссылке эффективной Java Джошуа Блоха.
во втором абзаце автор говорит:
класс является частным или package-private, и вы уверены, что его метод equals никогда не будет вызван. возможно,
equals
метод должны быть переопределен в этих обстоятельствах, в случае, если он случайно вызван:@Override public boolean equals(Object o) { throw new AssertionError(); // Method is never called }
Пожалуйста, объясните это. Я запутавшись в использовании автором термина private class и почему существует необходимость переопределить метод equals, когда мы точно знаем, что он не будет вызван.
1 ответов
класса может быть частным, только если он является внутренним классом.
Что касается "почему", необходимо переопределить equals
, причина в том, что, написав его, как вы показали, вы будете обеспечить что метод никогда не вызывается намеренно. Момент полгода в будущем, когда новый разработчик проекта вызовет equals по этому классу, метод будет бросок и сигнал, что это не правильно, чтобы вызвать его. Это хорошо, это предотвращает "забываю" об этом.