【问题标题】:Add extended class to ArrayList将扩展类添加到 ArrayList
【发布时间】:2016-02-18 22:37:45
【问题描述】:

我想使用 add 函数将 Special 类(扩展 Mundane)的对象添加到 ArrayList。

我尝试过的:

ArrayList<Class<? extends Mundane>> all = new ArrayList<Class<? extends Mundane>>();
all.add(Arrays.asList(
  specialThingy = new Special()
));

这给了我以下错误: ArrayList>类型的add(Class)方法不适用于参数(List)

有人可以帮我吗?

【问题讨论】:

    标签: java class arraylist


    【解决方案1】:

    你需要的是

    ArrayList<Mundane> all = new ArrayList<Mundane>();
    all.add(new Special());
    

    ClassArrays.asListspecialThingy 都是令人困惑的事情。

    如果你想存储Special,那么就写

    ArrayList<Mundane> all = new ArrayList<Mundane>();
    Special specialThingy = new Special();
    all.add(specialThingy);
    

    【讨论】:

    • 谢谢,这行得通,但我实际上使用的是 Arrays.asList,所以我可以一次添加多个。有什么建议吗?
    • 三个选项:在每个元素上单独调用add,调用all.addAll(Arrays.asList(element1, element2, ...))(注意addAll而不是add),或者使用Collections.addAll(all, element1, element2, ...)
    • 实际上,还有第四个选项是单行:List&lt;Mundane&gt; all = new ArrayList&lt;&gt;(Arrays.asList(element1, element2, elements3));。假设您想在创建列表时立即添加元素。
    猜你喜欢
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2016-06-28
    • 2013-01-18
    • 2018-04-29
    相关资源
    最近更新 更多