【问题标题】:Why Java 6 overrides keySet(), entrySet() and values() interface in SortedMap为什么 Java 6 会覆盖 SortedMap 中的 keySet()、entrySet() 和 values() 接口
【发布时间】:2015-03-19 14:09:21
【问题描述】:

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 被覆盖。谁能告诉我做出这种改变的目的是什么?

【问题讨论】:

    标签: java dictionary sortedmap keyset entryset


    【解决方案1】:

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

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

    Javadoc 是接口契约的一部分。在 Java 6 中,Sun/Oracle 认为有必要澄清这些方法在 SortedMap 上的行为,这进一步限制了它们在 Map 中的行为。

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

    集合的迭代器按升序返回键。

    Map 上,与一般方法相同的方法没有此描述,允许 Map 以它们喜欢的任何顺序返回键集; SortedMap 进一步限制了自己。

    【讨论】:

    • 澄清一下,SortedMap 是一个接口——Map 接口方法被重写(仍然没有实现)以便拥有自己的 javadoc。
    猜你喜欢
    • 1970-01-01
    • 2012-02-16
    • 2015-01-14
    • 2014-04-28
    • 2023-03-24
    • 2020-05-02
    • 1970-01-01
    相关资源
    最近更新 更多