我有一个类 Action,它有一个名为 doAction() 的方法。此方法的存在只是为了覆盖我添加到名为 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() 方法。
顺便说一句,这是我第一次遇到匿名类。我想我理解这个概念,但实际使用它们是另一回事。