La classe Collections
ha un certo numero di metodi di supporto statici per fornire sola lettura viste vari tipi di raccolta, come unmodifiableSet()
, unmodifiableList()
, ecc Per queste sottofinestre, il hashCode()
e equals()
metodi inoltra le chiamate alla raccolta sottostante ... Con una sola eccezione: unmodifiableCollection()
.hashCode e uguale per Collections.unmodifiableCollection()
Il JavaDoc explicitly states:
La collezione restituita non non passare il hashCode e uguale operazioni fino alla raccolta di supporto, ma si basa su
equals
ehashCode
metodiObject
s'. Questo è necessario per preservare i contratti di queste operazioni nel caso in cui la raccolta di fondi sia un insieme o un elenco.
La mia domanda: wtf sta parlando ?? Se la raccolta di accompagnamenti è un set o un elenco, mi aspetterei un comportamento coerente con unmodifiableSet()
e unmodifiableList()
. Come potrebbe violare i contratti hashCode/Equals?