为什么Java 6 覆盖SortedMap中的keySet()、entrySet()和values()接口

Why Java 6 overrides keySet(), entrySet() and values() interface in SortedMap

Java 5 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/SortedMap.html

Java 6 https://docs.oracle.com/javase/6/docs/api/java/util/SortedMap.html

如您所见,自 Java 6 起,这三个 api 已被覆盖。谁能告诉我这样修改的目的是什么?

必须重写这些方法才能拥有自己的 Javadoc。

在子接口中声明方法的其他原因是能够限制 return 类型或添加注释,但在这种情况下他们没有这样做,所以这不是原因。

Java文档是接口契约的一部分。在 Java 6 中,Sun/Oracle 觉得有必要阐明这些方法在 SortedMap 上的行为,这进一步限制了它们在 Map 中的行为。

例如,在 SortedMap 中,keySet 的 Javadoc 说:

The set's iterator returns the keys in ascending order.

Map 上,相同的方法没有一般情况下的此描述,允许地图以他们喜欢的任何顺序 return 键集; SortedMap 进一步限制了自己。