2016-06-07 23 views
-2

任何人都可以请解释为什么下面两个声明的情况是无效的吗?如果有人能够做志愿者,我会非常感激他的帮助。整数类型的Java列表声明generic

情况1:List< Integer> ls= new List< Integer>();

情况2:List< List< Integer>> ll= new List< List< Integer>>();

+0

是因为List是接口和接口不能被实例化?但是然后在下面的代码似乎像与铸造实例: - 公共接口甲 { } 公共类B实现阿 { } 公共静态无效的主要(字串[] args) { 测试=新B() ; // A test = new A(); //不会编译 } –

+1

'B'是一类,'A'只是一个接口 –

+0

去+1您的问题只是为您的个人资料图片。 –

回答

4

ListInterface不是类。

尝试使用ArrayList

1

List,更具体地java.util.List,是一个接口,并且是java.util.Collection接口的子类型。

接口无法实例化。实现接口并覆盖所有抽象方法的类(不包括抽象类)是实例化和使用的类。

您可以从Java Collections Framework的以下List实现选择:

  • 的java.util.ArrayList
  • java.util.LinkedList中
  • java.util.Vector中
  • 的Java。 util.Stack

看看this文章。它解释了如何使用上述类。

另外,看看this教程。

1

因为Listinterface,他们永远不能实例化。 ArrayList是Listinterface的实现类。 你可以做这样的事情:

ArrayList al =new ArrayList(); //ArrayList implements List,so this will give you all functionality of List 
1

都是无效becaluse

List是一个接口,你不能创建对象 考虑这个

Interface A<> { 
} 
(简单的传承是不是?)

并且您正在尝试像

A<Something> a=new A<>(); 

是相同

List< Integer> ls= new List< Integer>(); 

但Java得到了ArrayList and LinkedList对于这一点,你必须做像

List<Integer> list=new ArrayList<>(); 

由于ArrayList实现List接口和扩展抽象类AbstractList