Метод 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 по этому классу, метод будет бросок и сигнал, что это не правильно, чтобы вызвать его. Это хорошо, это предотвращает "забываю" об этом.