Класс Collections
имеет ряд статических вспомогательных методов для представления представлений только для чтения различных типов коллекций, таких как unmodifiableSet()
, unmodifiableList()
и т.д. Для этих объектов просмотра hashCode()
и equals()
методы переадресации вызовов в базовую коллекцию... С одним нечетным исключением: unmodifiableCollection()
.
JavaDoc явно указывает:
Возвращаемая коллекция не передает хэш-код и равнодействует операциям с базой данных, но полагается на методы
Object
equals
иhashCode
. Это необходимо для сохранения контрактов этих операций в случае, если коллекция поддержки является набором или списком.
Мой вопрос: wtf это говорит о??? Если коллекция поддержки представляет собой набор или список, я ожидаю, что поведение будет соответствовать unmodifiableSet()
и unmodifiableList()
. Как это нарушит контракты hashCode/equals?