创建 NavigableInterface 的目的?
Purpose of creating NavigableInterface?
为什么 NavigableMap
接口是用额外的方法定义创建的,并用 SortedMap
扩展的,而他们本可以在 SortedMap
接口中添加它并像往常一样在 [=13= 中实现它们]?
互联网上充满了在地图上导航的答案。这里导航是什么意思?
我不会说 NavigateMap
有什么用途,而是说为什么不修改 SortedMap
界面而不是添加新界面;那是因为它会破坏现有的实现。正如您指出的 TreeMap
等可以更新以实现新方法,但是 SortedMap
的自定义实现呢?因此,任何升级到 JRE 1.6+ 的遗留代码都需要搜索代码库并实现这些新方法,但是 Java 宣称自己是向后兼容的(对于 Java 6 至少在 [=添加了 10=])
SortedMap
界面已发布(自 1.2 起)。这意味着可能有成百上千的 类 依赖于 SortedMap
。如果您要在 1.6 中向 SortedMap
添加新方法,而不提供 default
方法实现,这将破坏所有实现 SortedMap
的 类。鉴于如此多的东西都依赖于 Java,这将 彻底破坏地球上的一切 。我希望很明显 "not breaking everything on the entire planet" 是一个足够好的理由,而不是随意添加一些晦涩的方法 (这显然是对实际发生的事情的过于戏剧化和半开玩笑的描述。如果 Java 标准库的维护者那样做了,那么就没有人会使用新版本,而且可能会有人提交错误报告,就是这样).
- 文档非常清楚地说明了 "to navigate" 的含义:
Methods lowerEntry, floorEntry, ceilingEntry, and higherEntry
https://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html
意味着你不仅可以查找和遍历,还可以找到"close"到请求键的条目。
为什么 NavigableMap
接口是用额外的方法定义创建的,并用 SortedMap
扩展的,而他们本可以在 SortedMap
接口中添加它并像往常一样在 [=13= 中实现它们]?
互联网上充满了在地图上导航的答案。这里导航是什么意思?
我不会说 NavigateMap
有什么用途,而是说为什么不修改 SortedMap
界面而不是添加新界面;那是因为它会破坏现有的实现。正如您指出的 TreeMap
等可以更新以实现新方法,但是 SortedMap
的自定义实现呢?因此,任何升级到 JRE 1.6+ 的遗留代码都需要搜索代码库并实现这些新方法,但是 Java 宣称自己是向后兼容的(对于 Java 6 至少在 [=添加了 10=])
SortedMap
界面已发布(自 1.2 起)。这意味着可能有成百上千的 类 依赖于SortedMap
。如果您要在 1.6 中向SortedMap
添加新方法,而不提供default
方法实现,这将破坏所有实现SortedMap
的 类。鉴于如此多的东西都依赖于 Java,这将 彻底破坏地球上的一切 。我希望很明显 "not breaking everything on the entire planet" 是一个足够好的理由,而不是随意添加一些晦涩的方法 (这显然是对实际发生的事情的过于戏剧化和半开玩笑的描述。如果 Java 标准库的维护者那样做了,那么就没有人会使用新版本,而且可能会有人提交错误报告,就是这样).- 文档非常清楚地说明了 "to navigate" 的含义:
Methods lowerEntry, floorEntry, ceilingEntry, and higherEntry
https://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html
意味着你不仅可以查找和遍历,还可以找到"close"到请求键的条目。