【发布时间】:2020-10-29 09:59:18
【问题描述】:
我有不允许修改的文件 Card.java 和 Util.java。出于我自己的目的,我创建了一个扩展 Card 的类 Card2,并添加了一个 equals() 方法和一个 hashcode() 方法。 Util 类包含一个将ArrayList<Card> 作为参数的方法。我有一个ArrayList<Card2>,我想运行那个方法。
我的理解是,在这种情况下,Card2 与 Card 具有“is-a”关系,所以我认为应该有一种方法可以将 ArrayList<Card2> 转换为 ArrayList<Card>。
我不确定如何进行这种转换。我尝试了(ArrayList<Card>) arr,其中arr 是ArrayList<Card2>,但我收到一条错误消息,指出这些是不可转换的类型。我意识到我可以创建一个新的ArrayList<Card> 并独立添加arr 中的每张卡片,但我想知道是否有更好的方法来解决这个问题。
【问题讨论】:
-
我认为你应该做的是,从一开始就声明一个
ArrayList<Card>,但在创建它们时用Card2对象填充它。