doAction() というメソッドを持つクラス Action があります。このメソッドは、allActions というアクション リストに新しいアクションを追加するたびに上書きするためだけに存在します。
public void doAction() {
System.out.println("Overload this method.");
}
アクションのリストは、次のリストに格納されています。
public static List<Action> allActions = new ArrayList<Action>();
次のような呼び出しでこのリストに追加されます。
allActions.add(
new Action(id){
public void doAction(Word w1, Word w2) {
//perform some action
}
}
);
しかし、このコードは私にとってはうまくいきません。allActions リストから上書きされた doAction() メソッドにアクセスしようとすると、デフォルトのメソッドが実行されます。
allActions が Action オブジェクトのリストであるため、リストに追加されたときに型が匿名クラスから変更され、デフォルトのメソッドに戻っていることが問題であると思われます。
Action クラスのさまざまな匿名バージョンのリストを維持する方法についてのアイデアはありますか? アクションに与えられた ID に基づいて、これらのさまざまな doAction() メソッドを呼び出せるようにしたいと考えています。
ところで、匿名クラスに遭遇するのはこれが初めてです。概念は理解できると思いますが、実際に使用するのは別の話です。