Ich wurde in einem Interview gefragt, welche Sammlung das Prinzip S.O.L.I.D bricht ??
Kann jemand erklären, welcher ist es und wie?
Java bietet eine generische Sammlung mit dem Namen IdentityHashMap<K,V>
bricht das Substitutionsprinzip von Liskov - das "L" in SOLID, indem es absichtlich den Vertrag von Map<K,V>
verletzt.
Hier ist ein Hinweis aus der Dokumentation der Klasse IdentityHashMap<K,V>
:
Diese Klasse ist keine universelle Kartenimplementierung! Während diese Klasse die Map-Schnittstelle implementiert, verletzt sie absichtlich den allgemeinen Vertrag von Map, der beim Vergleich von Objekten die Verwendung der equals-Methode vorschreibt. Diese Klasse ist nur für die seltenen Fälle vorgesehen, in denen Semantik für die Referenzgleichheit erforderlich ist.