hashCode i jest równy dla Collections.unmodifiableCollection ()
TheCollections
klasa ma wiele statycznych metod pomocniczych do wyświetlania widoków tylko do odczytu różnych typów kolekcji, takich jakunmodifiableSet()
, unmodifiableList()
, itp. Dla tych obiektów widoku,hashCode()
iequals()
metody przekazują połączenia do podstawowej kolekcji ... Z jednym dziwnym wyjątkiem:unmodifiableCollection()
.
JavaDocwyraźnie stwierdza:
Zwrócona kolekcja manie przekazać operacje hashCode i równe operacje do kolekcji kopii zapasowej, ale zależy odObject
jestequals
ihashCode
metody. Jest to konieczne, aby zachować umowy dotyczące tych operacji w przypadku, gdy zbiór kopii zapasowych jest zbiorem lub listą.
Moje pytanie: wtf mówi o tym ?? Jeśli kolekcja kopii zapasowych jest zbiorem lub listą, oczekiwałbym zachowania zgodnego zunmodifiableSet()
iunmodifiableList()
. W jaki sposób naruszyłoby to kontrakty hashCode / equals?