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无法通过方法调用转换转换为超类)
目前,我无法通过另一种方式来实现我的代码,以便能够动态检索对象。大多数情况下,要为子类调用的方法都包含在超类中,但是每个子类都有一些只与它相关的方法。
是否存在可以纠正的设计缺陷。
答案 0 :(得分:5)
当然你can do what you are trying。但是,您应该将String
和SubClass1
以及SubClass2
的实例放入地图中。
答案 1 :(得分:0)
答案 2 :(得分:0)
我不知道这是否是您正在寻找的答案,但您可以创建一个通用界面并将其用作参考!我相信这叫多态性!