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>去声明对象了

1、<String>是泛型。早期JDK中没有,后来的包括现在已经普遍使用泛型了。
查看帮助文档,只要后面一个类或者接口后面有尖括号的就是泛型。
比如这个<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的方法是特有的

我也遇到了一样的问题,后来想了想,原因应该就是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的list类实例化对象的问题?的主要内容,如果未能解决你的问题,请参考以下文章

java的泛型类怎么实例化对象?

(JAVA)啥是实例化如何实现类的实例化(用类或方法创建一个该类的实例)?

java中实例化方法是啥意思

java中的实例化对象有啥用???????

JAVA的“一个类只能要求有一个实例化对象”是啥意思

java Class.forName 实例化对象,并调用类中相应的方法