我有一个名为“Canvas”的超类,我从中创建了几个子类。我想将这些子类的实例存储在字典中。所以我尝试如下设置我的代码:
public class Main {
public static void main(String[] args) throws Exception{
Canvas canvas = new Canvas();
Menu menu = new Menu();
Instructions instructions = new Instructions();
Map<String, Canvas> screens = new HashMap<String, Canvas>();
screens.put("menu", menu);
screens.put("instructions", instructions);
因此,由于我要添加到字典中的内容都是 Canvas 类的子类,因此我设置了哈希表以接受该类型。这有效..在大多数情况下。但是,最大的问题是我无法访问任何子类的方法。我只能调用超类中存在的方法。
如果我尝试做类似的事情,
screens.get("menu").some_func_in_subclass();
编译器吐出“找不到符号”消息。
所以,如果我有这样的事情:
SuperClass
|
|
+------------------------------------
| | |
SubClass1 SubClass2 SubClass3
我如何将这些子类的实例存储在 HashMap 中?