【发布时间】:2014-09-15 23:43:05
【问题描述】:
我在一次采访中被问到哪个系列违反了 S.O.L.I.D 原则??
谁能解释它是哪一个以及如何?
【问题讨论】:
-
我同意,似乎是真正的问题。
-
有人问我这个我没有回答,你建议我应该如何格式化?欢迎任何建议
我在一次采访中被问到哪个系列违反了 S.O.L.I.D 原则??
谁能解释它是哪一个以及如何?
【问题讨论】:
Java 提供了一个名为 IdentityHashMap<K,V> 的通用集合,它违反了 Liskov 替换原则 - SOLID 中的“L”,故意违反了Map<K,V> 的约定。
这是IdentityHashMap<K,V> 类文档中的注释:
这个类不是通用的 Map 实现!虽然这个类实现了 Map 接口,但它故意违反了 Map 的一般合同,该合同要求在比较对象时使用 equals 方法。此类仅在需要引用相等语义的极少数情况下使用。
【讨论】:
String 不是 Java 集合,从安全角度来看,将其设为 final 绝对是正确的做法。