假设我有A类作为B类和C类的父类
我初始化了两个ArrayList<B>
bList和ArrayList<C>
cList。
然后我有另一个ArrayList<ArrayList<A>>
bigList。
我想通过bigList.add(bList)和bigList.add(cList)将bList和cList存储到该bigList中,这给了我一个错误。有人建议我应该如何解决这个或其他方式吗?
谢谢
答案 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);