UnmodifiableCollection

UnmodifiableCollection

Collections类具有许多静态帮助器方法,以提供各种集合类型的只读 View ,例如unmodifiableSet()unmodifiableList()等。对于这些 View 对象,hashCode()equals()方法将调用转发给基础集合。奇怪的异常(exception):unmodifiableCollection()

JavaDoc explicitly states:



我的问题:wtf在说什么?如果支持集合是集合或列表,则希望行为与unmodifiableSet()unmodifiableList()一致。那将如何违反hashCode/equals契约(Contract)?

最佳答案

从JavaDoc for Collection中:


UnmodifiableListUnmodifiableCollection,但反之则不一样-包裹UnmodifiableCollectionList不是UnmodifiableList。因此,如果将包装列表UnmodifiableCollectiona与包装相同的列表UnmodifiableLista进行比较,则两个包装器不应相等。如果您只是传递到包装列表,它们将相等。

10-04 18:01