Arraylists的Arraylist的通用类型

在正常的数组列表初始化中,我们用于定义generics类型如下,

List list1 = new ArrayList(); 

但是对于ArrayLists的ArrayList,我们如何定义其generics类型?

数组列表数组列表的代码如下:

 ArrayList[] arr=new ArrayList[n]; for(int i=0;i<n;i++) { arr[i]=new ArrayList(); } 

只要分享语法,如果有人知道它…!

你可以干脆做

 List> l = new ArrayList>(); 

如果您需要一系列列表,您可以这样做

 List[] l = new List[n]; 

并安全地忽略或取消警告。

如果你(真的)想要一个列表列表,那么这是正确的声明:

 List> listOfLists = new ArrayList>(); 

我们无法创建通用数组。 new List[0]是编译时错误。

像这样的东西:

 List> matrix = new ArrayList>(); for (int i = 0; i < numRows; ++i) { List row = new ArrayList(); // add some values into the row matrix.add(row); } 

使内部列表的类型符合您的要求; 这仅用于说明目的。

你是对的:这看起来很疯狂。 (可能是它的一个Bug ……)而不是使用

 ArrayList[] lst = new ArrayList[]{}; 

使用:

 ArrayList[] list1 = new ArrayList[]{}; 

即使你没有描述一个通用的通用,也会为宣言工作!

您正在谈论一系列列表(更具体的ArrayLists)。 Java不允许生成通用数组(除非使用通配符,请参阅下一段)。 因此,您应该忘记为数组使用generics,或者使用列表而不是数组(为此提出了许多解决方案)。

来自IBM文章的引用:

数组是协变但generics的事实的另一个结果是你无法实例化generics类型的数组(新的List [3]是非法的),除非type参数是一个无界的通配符(new List <?> [3] ]是合法的)。