Java 分配ArrayList<;列表<;整数>&燃气轮机;使用ArrayList<;ArrayList<;整数>&燃气轮机;
为什么我不能将Java 分配ArrayList<;列表<;整数>&燃气轮机;使用ArrayList<;ArrayList<;整数>&燃气轮机;,java,generics,arraylist,Java,Generics,Arraylist,为什么我不能将ArrayList分配到ArrayList中,如下所示: ArrayList<List<Integer>> x = new ArrayList<ArrayList<Integer>>(); ArrayList x=new ArrayList(); 不是所有的ArrayList都是列表,因此我可以在哪里放置列表,也可以放置ArrayList?如果这是合法的,您可以执行以下操作: ArrayList<ArrayList<I
ArrayList
分配到ArrayList
中,如下所示:
ArrayList<List<Integer>> x = new ArrayList<ArrayList<Integer>>();
ArrayList x=new ArrayList();
不是所有的ArrayList都是列表,因此我可以在哪里放置列表,也可以放置ArrayList?如果这是合法的,您可以执行以下操作:
ArrayList<ArrayList<Integer>> y = new ArrayList<>();
ArrayList<List<Integer>> x = y; // Compiler error! Pretend it's OK, though.
x.add(new LinkedList<>()); // Fine, because a LinkedList<Integer> is a List<Integer>
因为您不能向该列表添加任何内容(除了literal
null
),因此不会出现ClassCastException
。因为如果x
被键入ArrayList
,那么您可以将任何类型的列表填充到x
,因此这应该是合法的:
x.add(new LinkedList<Integer>());
但是有了x
的定义,您将无法实际将任何内容放入x
ArrayList<? extends List<Integer>>`
x.add(new LinkedList<Integer>());
ArrayList<? extends List<Integer>> x = new ArrayList<ArrayList<Integer>>();