将HashMap与子类一起使用

时间:2013-01-22 13:19:12

标签: java inheritance hashmap

 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无法通过方法调用转换转换为超类)

目前,我无法通过另一种方式来实现我的代码,以便能够动态检索对象。大多数情况下,要为子类调用的方法都包含在超类中,但是每个子类都有一些只与它相关的方法。

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

3 个答案:

答案 0 :(得分:5)

当然你can do what you are trying。但是,您应该将StringSubClass1以及SubClass2实例放入地图中。

答案 1 :(得分:0)

Generics Bounded Wild Card会有所帮助。

答案 2 :(得分:0)

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