La clase Collections
tiene un número de métodos de ayuda estáticas para proporcionar vistas de sólo lectura de los diversos tipos de colección, como unmodifiableSet()
, unmodifiableList()
, etc. Para estos objetos de vista, la hashCode()
y equals()
métodos reenvía llamadas a la colección subyacente ... Con una extraña excepción: unmodifiableCollection()
.hashCode y es igual para Collections.unmodifiableCollection()
el Javadoc explicitly states:
La colección devuelta hace no pasar el hashCode y es igual a operaciones a través de la colección de respaldo, pero se basa en
equals
yhashCode
métodosObject
's. Esto es necesario para preservar los contratos de estas operaciones en el caso de que la colección de respaldo sea un conjunto o una lista.
Mi pregunta: wtf está hablando? Si la colección de respaldo es un conjunto o una lista, esperaría un comportamiento consistente con unmodifiableSet()
y unmodifiableList()
. ¿Cómo violaría eso los contratos hashCode/equals?