gpt4 book ai didi

java - 无法解析 TreeMap 的方法 tailMap

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:12 25 4
gpt4 key购买 nike

为什么 Map 类型的 TreeMap 没有定义方法 tailMapheadMap

Map<String, String> map = new TreeMap<>();
map.tailMap(); //cannot resolve method tailMap

通过显式转换它可以工作:

((TreeMap<String, String>) map).tailMap("a");

使用 NavigableMap 一切都很好:

NavigableMap<String, String> map1 = new TreeMap<>();
map1.tailMap("a");

如果我是对的那是因为接口(interface) Map 缺少相应的方法,尽管对象 map 是类 TreeMap 的具体实现 当然有这样的方法。

只是在寻找更详细的解释。

谢谢!

最佳答案

TreeMap 类型的对象确实有方法 tailMap ,但您通过 Map 类型的引用来引用它,它不公开 tailMap方法本身。这就是编译器提示的原因。

请注意,Java 是静态类型。这意味着无论实际实现如何,编译器都需要确保在编译时有一个方法可以调用。

因为你可以有一个 Map 未定义 tailMap 的实现方法,编译器将不允许您调用 tailMap通过 Map 引用的对象上的方法.

NavigableMap接口(interface)定义方法tailMap ,您可以在通过 NavigableMap 引用的任何对象上调用该方法.如果您使用 TreeMap,这也适用作为引用类型,因为 TreeMap工具 NavigableMap .这就是为什么编译器不会在您的第二个和第三个示例中提示(显式转换和 NavigableMap 引用声明)。

关于java - 无法解析 TreeMap 的方法 tailMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52780737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com