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
是编译时错误。
像这样的东西:
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] ]是合法的)。