【发布时间】:2014-01-28 10:59:36
【问题描述】:
这有点工作:
ArrayList<Object> list1 = new ArrayList<>();
list1.add("Hello");
list1.add(1.5);
list1.add(new Whatever());
ArrayList<ArrayList<Object>> listAll = new ArrayList<>();
listAll.add(list1);
在对象的 ArrayList 中,您可以添加任何对象......您也可以将具有对象的相同 ArrayList 添加到另一个对象 ArrayList 中。为什么这不起作用:
ArrayList<String> list1 = new ArrayList<>();
list1.add("Hello");
list1.add(new String("World!"));
ArrayList<ArrayList<Object>> listAll = new ArrayList<>();
listAll.add(list1);
我有一个字符串数组列表(字符串是一个对象),尽管这些是 listAll 中的对象,但我无法添加这些。
PS:JDK1.7
编辑:嗯,我确实读过这个关于狗和猫的“重复”。不知道我明白了,但没关系:)
【问题讨论】:
-
因为泛型类型是不变的。
List<String>不是List<Object>的子类型。 -
@silla 在您的第一个示例中,
ArrayList<Object>是ArrayLst<Object>(显然)但在您的第二个示例中ArrayList<String>不是ArrayList<Object>。