将列表添加到扩展的列表中

时间:2014-01-27 20:52:43

标签: java

所以我有这种情况。我被赋予了将一个列表的内容添加到另一个列表的任务。听起来很简单。我的问题是,现有列表具有以下语法:

// Existing code
List<? extends ProductCatalog> listProduct = null;
listProduct = RetrieveService.getInstance().getListProduct("client1");

// My code is 
List<? extends ProductCatalog> listProduct2 = null;
listProduct2 = RetrieveService.getInstance().getListProduct("client2");

如果listProduct是普通List,我只使用AddAll。但它不适用于扩展。或者最有可能的是,我做错了。所以在这个例子中,我如何将listProduct2添加到listProduct。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

以类型安全的方式是不可能的。另见例如How can I add to List<? extends Number> data structures?

您可以将它们组合在新的List<ProductCatalog>中,具体取决于您希望实现的目标。

答案 1 :(得分:1)

如果是强制性的,使用<? extends ProductCatalog>将很困难,但如果您可以在类ProductCatalog中实现一个空接口,然后声明List<your_interface> listProduct它可以正常工作。

答案 2 :(得分:0)

您可以避免使用泛型中的extends关键字并仅使用<ProductCatalog>吗?这可以让你的生活更轻松。

但是,泛型是一个编译时构造。因此,您可以编写一个方法,将两个列表作为参数而不使用泛型。这样你就可以把任何东西放在列表中。但它不是一种干净的方式,可能会导致一些其他问题,特别是如果你有源代码质量检查; - )

add(clientProduct, clientProduct2);

private void add(List clientProduct, List clientProduct2){
    clientProduct.addAll(clientProduct2);
}