【问题标题】:Why cannot add an ArrayList<String> into an ArrayList<Object>? [duplicate]为什么不能将 ArrayList<String> 添加到 ArrayList<Object> 中? [复制]
【发布时间】: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&lt;String&gt; 不是 List&lt;Object&gt; 的子类型。
  • @silla 在您的第一个示例中,ArrayList&lt;Object&gt;ArrayLst&lt;Object&gt;(显然)但在您的第二个示例中 ArrayList&lt;String&gt; 不是 ArrayList&lt;Object&gt;

标签: java object arraylist


【解决方案1】:

这里的一切都是 Object 的实例,但反向不是真的。

(String is an Object but Object is not String)

这就是字符串类型的 ArrayList 不接受 Object 而只接受 String 的原因。

【讨论】:

  • 你错了:在上面的例子中,一个 ArrayList 应该被添加到一个 ArrayList>。真正的原因在assylias的评论中提到了
猜你喜欢
  • 2021-06-11
  • 2014-01-09
  • 2014-07-31
  • 2015-12-07
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
相关资源
最近更新 更多