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>>>
では、カードを特定のサブクラスにするにはどうすればよいのでしょうか?