java的list类实例化对象的问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的list类实例化对象的问题?相关的知识,希望对你有一定的参考价值。
List<String>
l = new ArrayList<String>();// 利用ArrayList类实例化List集合
List<String> l2 = new LinkedList<String>();// 利用LinkedList类实例化List集合
这两句代码
问题是:
1、<String>表示什么
2、List不是个类吗,为什么又用ArrayList<string> LinkedList<String>去声明对象了
查看帮助文档,只要后面一个类或者接口后面有尖括号的就是泛型。
比如这个<String>泛型的含义就是规定了,该类new出的对象或者声明的引用只能存放String类的对象,放其他的对象不行。比如<Integer>就说这个List中只能放整形的数据(int自动装箱成Integer)。
2、接口List分为 LinkedList和ArrayList。List是这两个子类的父类(接口),应用多态的知识,声明一个父类引用去指向一个子类对象。也就是List<String> l2 = new LinkedList<String>();是完全可以并广泛应用的。甚至你可以用接口 Collection<E>这个父类的引用去指向一个LinkedList的子类的对象。 参考技术A <String>是泛型,表示这个List集合中存放的是String类型的数据。
List是一个接口,接口是不可以实例化对象的,所以用这个接口的实现类实例化这个list对象,是多态的一种体现。 参考技术B 泛型.
如果你不加<String>这个的话 你的List就可以放进去所有类型的对象
取出来的时候都变成了Object对象 使用的时候需要进行强制类型转换
加了<String>的话List只能存String 取出来也是String不需要强制类型转换 参考技术C 1.表示List中只能存放字符串。
2.List是一个借口,因此你不能直接new List(),
ArrayList和LinkedList是List的实现类,因此new List的实现类是可以的。 参考技术D <String> 是泛型就是这个定义的List添加的数据必须是String类型的数据 。List是一个借口 后面的LinkedList可以看做是实现类
Java中LinkedList类为何无法用List接口引用来实例化
如图所述。
众所周知,ArrayList和LinkedList实现了List接口。
我在实例化ArrayList对象时用List list1 = new ArrayList();就可以实例化成功并正常的编译和使用。
而在实例化LinkedList对象时用List list2 = new LinkedList();就出错了呢?
改用LinkedList list3 = new LinkedList();就可以正常编译和使用
我使用了list2.addFirst();方法,结果编译不过。看来带First的方法是特有的
希望有所帮助。 参考技术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的list类实例化对象的问题?的主要内容,如果未能解决你的问题,请参考以下文章