gpt4 book ai didi

java - 使用 ArrayList> 分配 ArrayList>

转载 作者:行者123 更新时间:2023-11-30 06:27:16 25 4
gpt4 key购买 nike

为什么我不能分配 ArrayList<ArrayList<Integer>>进入ArrayList<List<Integer>>如下所示:

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

难道不是所有的ArrayList都是列表吗?因此我可以在可以放置List的地方也可以放置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>

但是这样会失败:

ArrayList<Integer> a = y.get(0);  // ClassCastException!

因为 y 的第一个元素是 LinkedList,而不是 ArrayList

如果x的类型为

,您可以将 y分配给 x
ArrayList<? extends List<Integer>>`

因为您无法向该列表添加任何内容(除了文字 null 之外),因此不会发生 ClassCastException

关于java - 使用 ArrayList<ArrayList<Integer>> 分配 ArrayList<List<Integer>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46921480/

25 4 0