java中的哪个集合类违反了S.O.L.I.D原则?

时间:2014-07-24 12:12:43

标签: java ooad

我在接受采访时被问到哪个收集打破了S.O.L.I.D原则?

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

1 个答案:

答案 0 :(得分:12)

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

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

  

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