在具有不同类型的另一个列表中添加列表

时间:2013-03-29 10:27:44

标签: java java-ee casting arraylist

在我的Java EE项目中,我有2个ArrayList个对象:

private ArrayList<Sales_personRef> sales_personsRef = new ArrayList<Sales_personRef>();

private ArrayList<Sales_person> sales_persons = new ArrayList<Sales_person>();

我的问题是:如何在第二个列表中添加我的第一个列表(sales_personsRef)? 这些列表有不同的类型,我无法投射......

4 个答案:

答案 0 :(得分:2)

如果Sales_personRef和Sales_person都扩展了另一个类,让我们说Person,那么您可以将这两种类型添加到ArrayList<Person>

请记住,如果您这样做,那么您稍后从列表中获得的内容将是Person类型。然后,您必须将其强制转换为原始类。

答案 1 :(得分:0)

将第二个列表声明为List<Object>

答案 2 :(得分:0)

您需要转换第二个列表

接受的项目中第一个列表的每个项目
sales_persons.addAll(convertSalesPersons(sales_personsRef));

with:

private static Collection<? extends Sales_person> convertSalesPersons(ArrayList<Sales_personRef> sales_persons) {
    List<Sales_person> persons = new ArrayList<Sales_person>();
    for (Sales_personRef sales_personRef : sales_persons) {
        persons.add(converSalesPersonRefToSalesPerson(sales_personRef));
    }
    return persons;
}
private static Sales_person converSalesPersonRefToSalesPerson(Sales_personRef sales_personRef) {
    //implement the conversion here
    return new Sales_person();
}

答案 3 :(得分:0)

你必须在这里使用多态概念。让一个父类说人,然后扩展它将起作用