Collections
类有许多静态辅助方法,以提供各种集合类型的只读视图,例如unmodifiableSet()
,unmodifiableList()
等。对于这些视图对象,hashCode()
和equals()
方法将调用转发到基础集合... 但有一个奇怪的例外:unmodifiableCollection()
。
JavaDoc 明确说明:
返回的集合不会将hashCode和equals操作传递到支持的集合中,而是依赖于
Object
的equals
和hashCode
方法。如果支持的集合是set或list,则必须这样做以保留这些操作的契约。
我的问题是:这在说什么?如果支持的集合是set或list,我希望其行为与unmodifiableSet()
和unmodifiableList()
一致。那会违反hashCode/equals契约吗?