java中的哪个集合类违反了SOLID原则?

jav*_*bie 8 java ooad

我在接受采访时被问到哪个系列打破了SOLID原则?

任何人都可以解释它是哪一个以及如何?

das*_*ght 12

Java提供了一个名为的通用集合IdentityHashMap<K,V>,它通过故意违反Map<K,V>合同来破坏Liskov替换原则 - SOLID中的"L" .

以下是该IdentityHashMap<K,V>课程文档中的注释:

这个类不是通用的Map实现!虽然这个类实现了Map接口,但它故意违反了Map的一般契约,它要求在比较对象时使用equals方法.此类仅用于需要引用相等语义的罕见情况.