我有一个包含 6 个子类的超类。我有一个带有字符串键和子类集合值的哈希图。我正在定义一种方法,该方法可以将超类作为参数并将其放入哈希图中的正确集合中。为了找到正确的密钥,我使用“istanceof”。现在,当我尝试将超类参数添加到未锁定的密钥时,我希望(我实际上无法编译我的程序)会出现编译时错误,因为我没有强制转换。我不能让变量引用一个类。据我所知,它需要引用一个对象。我可以参考Class<Subclass>.
但我仍然无法从那里取得进展。
public void addCard(AttackCard card) {
String category = null;
AttackCard type = null; <-- I would like to make this refer to e.g. Assassin
if (card instanceof Assassin) {
category = "assassins";
}if (card instanceof Fighter) {
category = "fighters";
}if (card instanceof Mage) {
category = "mages";
}if (card instanceof Marksman) {
category = "marksmen";
}if (card instanceof Support) {
category = "supports";
}if (card instanceof Tank) {
category = "tanks";
}
attackPool.get(category).get(card.getTier()).add(card)
}
2点需要注意:
1)子类是抽象的,不能初始化?
2)我的哈希图实际上是HashMap<String, Hashmap<Enum, ArrayList<Subclass>>>
那么我应该如何将我的卡施放为特定的子类?