提问者:小点点

将对象的ArrayList转换为父对象的ArrayList


我有档案卡。java和Util。java,我不允许修改它。出于我自己的目的,我创建了一个类Card2,它扩展了Card,并添加了一个equals()方法和一个hashcode()方法。Util类包含一个采用ArrayList的方法

我的理解是,在这种情况下,Card2与Card有一种“is-a”关系,因此我认为应该有一种方法来转换ArrayList

但我不确定如何进行这种转换。我试过了(ArrayList


共3个答案

匿名用户

给出卡片列表2:

ArrayList<Card2> card2s;

这样做:

ArrayList<Card> cards = new ArrayList<>(card2s);

构造函数接受集合

匿名用户

如果您可以访问该util方法,则可以在输入参数中使用通配符,如下所述...

https://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html

“这里有一个很小但非常重要的区别:我们将类型列表替换为列表

如果您没有该方法的访问权,您仍然可以在列表中强制转换项。Java流api示例:

是否可以在Java8中施放Stream?

匿名用户

    ArrayList<Card2> card2s = new ArrayList<>();

    ArrayList<Card> cards = (ArrayList<Card>)card2s.stream().map(card2 -> {
        Card card = new Card();
        //your logic to take data from card2 variable and set it to the new Card2 object:
        //e.g. card.setType(card2.getType());
        return card;
    }).collect(Collectors.toList());