我有档案卡。java和Util。java,我不允许修改它。出于我自己的目的,我创建了一个类Card2,它扩展了Card,并添加了一个equals()
方法和一个hashcode()
方法。Util类包含一个采用ArrayList的方法
我的理解是,在这种情况下,Card2与
Card有一种“is-a”关系,因此我认为应该有一种方法来转换
ArrayList
但我不确定如何进行这种转换。我试过了(ArrayList
给出卡片列表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());