0
 private HashMap<String, SuperClass> mapOfRoles = new HashMap();
 public void X()
  {
        mapOfRoles.put(String, SubClassA);
        mapOfRoles.put(String, SubClassB);
  }

エラー: put(String,Wolf) に適したメソッドが見つかりません playerRolesMap.put(listOfPlayers.get(0), new Wolf(listOfPlayers.get(0))); メソッド HashMap.put(String,Role) は適用外 (実引数 Wolf はメソッド呼び出し変換で Role に変換できない)

Wolf は Role のサブクラスです

サブクラスに書き込まれたメソッドにアクセスする必要があるプログラムを作成しようとしていますが、サブクラスをスーパークラスにキャストバックできないため、これはコンパイルされません。メソッド呼び出し変換による)

現時点では、オブジェクトを動的に取得できるようにコードを実装する別の方法がわかりません。ほとんどの場合、サブクラスに対して呼び出されるメソッドはスーパークラスに含まれていますが、各サブクラスにはそれに関連するメソッドがいくつかあります。

修正できる設計上の欠陥はありますか。

4

3 に答える 3

5

もちろん、あなたがしようとしていることはできます。ただし、 andとのインスタンスをマップに配置する必要があります。StringSubClass1SubClass2

于 2013-01-22T13:22:43.117 に答える
0

Generics BoundedWildCardが役立ちます。

于 2013-01-22T13:24:09.230 に答える
0

これがあなたが探している答えであるかどうかはわかりませんが、共通のインターフェースを作成して、代わりにそれを参照として使用することができます!それは多型と呼ばれていると思います!

于 2013-01-22T13:24:44.223 に答える