use*_*032 0 java inheritance hashmap
private HashMap<String, SuperClass> mapOfRoles = new HashMap();
public void X()
{
mapOfRoles.put(String, SubClassA);
mapOfRoles.put(String, SubClassB);
}
Run Code Online (Sandbox Code Playgroud)
错误:没有为put(String,Wolf)找到合适的方法playerRolesMap.put(listOfPlayers.get(0),new Wolf(listOfPlayers.get(0))); 方法HashMap.put(String,Role)不适用(实际参数Wolf无法通过方法调用转换转换为Role)
Wolf是Role的子类
我正在尝试编写一个程序,我需要访问写入子类的方法,但是这不会编译,因为子类不能转换回超类,编译器说:实际参数subclassA不能转换为超类通过方法调用转换)
目前我看不到另一种方法来实现我的代码,以便能够动态检索对象.大多数情况下,要为子类调用的方法都包含在超类中,但是每个子类都有一些只与它相关的方法.
是否存在可以纠正的设计缺陷.