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 的子类

我正在尝试编写一个程序,在该程序中我需要访问写入子类的方法,但是由于无法将子类转换回超类,因此无法编译,编译器会说:实际参数 subclassA 无法转换为超类通过方法调用转换)

目前我看不到另一种方法来实现我的代码以动态检索对象。大多数时候,为子类调用的方法都包含在超类中,但是每个子类都有一些只与它相关的方法。

是否存在可以纠正的设计缺陷。

4

3 回答 3

5

当然你可以做你正在尝试的事情。但是,您应该将and的实例放入地图中。StringSubClass1SubClass2

于 2013-01-22T13:22:43.117 回答
0

我不知道这是否是您正在寻找的答案,但您可以创建一个通用界面并将其用作参考!我相信这叫做多态性!

于 2013-01-22T13:24:44.223 回答
0

泛型有界通配符会有所帮助。

于 2013-01-22T13:24:09.230 回答