所以我有这种情况。我被赋予了将一个列表的内容添加到另一个列表的任务。听起来很简单。我的问题是,现有列表具有以下语法:
// 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。
任何帮助都将不胜感激。
答案 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);
}