java中的2d arraylist和类继承

时间:2012-02-26 20:44:48

标签: java inheritance arraylist

假设我有A类作为B类和C类的父类

我初始化了两个ArrayList<B> bList和ArrayList<C> cList。 然后我有另一个ArrayList<ArrayList<A>> bigList。

我想通过bigList.add(bList)和bigList.add(cList)将bList和cList存储到该bigList中,这给了我一个错误。有人建议我应该如何解决这个或其他方式吗?

谢谢

3 个答案:

答案 0 :(得分:3)

bigList应为ArrayList<ArrayList<? extends A>>以允许此操作。

答案 1 :(得分:0)

要在这种情况下创建列表列表,您需要使用<? extends A>来允许A的子类,而不仅仅是A本身。

    List<B> blist = new ArrayList<B>();
    List<C> clist = new ArrayList<C>();

    List<List<? extends A>> listofalist = new ArrayList<List<? extends A>>();

    listofalist.add(blist);
    listofalist.add(clist);

如果您想将B和C列表的内容复制到A列表中,则需要使用ArrayList.addAll(),而不是add()

add(Object o)用于将单个对象添加到列表中。

addAll(Collection c)用于将一个列表的所有内容添加到另一个列表(或其他集合)中。

请参阅javadoc获取ArrayList。

答案 2 :(得分:0)

简单地根据你刚写的内容,你的问题可能是你正在尝试这个:

bigList.add(aList);

当你的意思是这样做时:

bigList.add(bList);