gpt4 book ai didi

java - 为什么我的 LinkedList 不包含 addLast() 方法?

转载 作者:搜寻专家 更新时间:2023-11-01 01:33:13 26 4
gpt4 key购买 nike

我有一个奇怪的问题,我真的无法理解。

我用这种方式创建了一个LinkedList:

List<String> customList = new LinkedList<String>();

如果使用 list instanceof LinkedList 检查 customList 的类型,我得到 true,所以 customList 是一个 LinkedList。

现在,如果我尝试在 customList 上执行 addLast() 方法,我会收到 Eclipse 错误:

 The method addLast(String) is undefined for the type List<String>

addList 方法定义在类LinkedList 中但使用此方法的唯一方法是将 customList 声明为 LinkedList 而不是 List,方法如下:

LinkedList<String> customList= new LinkedList<String>();

或者我必须使用强制转换:

((LinkedList<String>) list).addLast(...);

我真的不明白这种行为,有没有人可以给我一些提示?您能否也给我一些链接或其他引用资料以了解此问题?

提前致谢

最佳答案

addLastLinkedList 类中声明,但不在 List 接口(interface)中声明。因此,您只能使用 LinkedList 类型的变量来调用它。但是,对于 List 类型的变量,您可以改为调用 add,因为它将元素添加到 List 的末尾。

当编译器看到 List 变量时,它不知道将分配给该变量的对象的运行时类型。因此它只能让你调用List接口(interface)的方法。例如,您可以为变量分配一个 ArrayList 实例,它没有 addLast 方法,因此它不能让您调用 LinkedList< 的方法 未在 List(或 List 的 super 接口(interface))中声明。

关于java - 为什么我的 LinkedList 不包含 addLast() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31580040/

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