Java中LinkedList类为何无法用List接口引用来实例化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中LinkedList类为何无法用List接口引用来实例化相关的知识,希望对你有一定的参考价值。

如图所述。
众所周知,ArrayList和LinkedList实现了List接口。
我在实例化ArrayList对象时用List list1 = new ArrayList();就可以实例化成功并正常的编译和使用。
而在实例化LinkedList对象时用List list2 = new LinkedList();就出错了呢?
改用LinkedList list3 = new LinkedList();就可以正常编译和使用
我使用了list2.addFirst();方法,结果编译不过。看来带First的方法是特有的

我也遇到了一样的问题,后来想了想,原因应该就是addFirst()和addLast()方法都是LinkedList类和ArrayList类所特有的,List接口中并未定义,所以若是用List接口去创建对象,调用对象的这两个方法时就会报错,必须使用类名进行实例化。
希望有所帮助。
参考技术A 可以。
List list = new LinkedList();
list.add("张三其");
list.add("王五");
for(Object obj : list)
System.out.println(obj.toString());
你应该检查是否是java.util包中的LinkedList类。本回答被提问者采纳
参考技术B 我遇到的问题是把类名也命名成LinkedList了,所以List list = new LinkedList();的时候调用的是当前这个自定义的LinkedList类,把类名改成LinkedListDemo就好了 参考技术C List是接口
LinkedList实现了List 同样也实现了Deque 等接口
List<String> list2=new LinkedList<String>();
这样写时会进行强制类型校验
参考技术D 没有错啊,如下程序正常编译。
...
public static void main(String[] args)
List list1=new ArrayList();
List list2=new LinkedList();

...

以上是关于Java中LinkedList类为何无法用List接口引用来实例化的主要内容,如果未能解决你的问题,请参考以下文章

JDK1.8源码——java.util.LinkedList 类

用 ArrayList 还是 LinkedList?看完你就懂了!

用 ArrayList 还是 LinkedList?看完你就懂了!

Java重要类之LinkedList

Java学习笔记5.2.2 List接口 - LinkedList类

用 ArrayList 还是 LinkedList?看完你就懂了!