「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 クラスのサブクラスなので、その Type を受け入れるようにハッシュテーブルを設定します。そして、これは機能します..ほとんどの場合。ただし、大きな問題は、サブクラスのメソッドにアクセスできないことです。スーパークラスに存在するメソッドしか呼び出せません。
次のようなことをしようとすると、
screens.get("menu").some_func_in_subclass();
コンパイラは「シンボルが見つかりません」というメッセージを吐き出します。
だから、私はこのようなものを持っている場合:
SuperClass
|
|
+------------------------------------
| | |
SubClass1 SubClass2 SubClass3
これらのサブクラスのインスタンスを HashMap に格納するにはどうすればよいですか?