我有一个类Action,它有一个叫做doAction()的方法.此方法仅用于覆盖我添加到名为allActions的操作列表的每个新操作.
public void doAction() {
System.out.println("Overload this method.");
}
Run Code Online (Sandbox Code Playgroud)
操作列表存储在以下列表中:
public static List<Action> allActions = new ArrayList<Action>();
Run Code Online (Sandbox Code Playgroud)
并通过以下调用添加到此列表中:
allActions.add(
new Action(id){
public void doAction(Word w1, Word w2) {
//perform some action
}
}
);
Run Code Online (Sandbox Code Playgroud)
但是这段代码对我不起作用.当我尝试从allActions列表中访问覆盖的doAction()方法时,它只执行默认方法.
我怀疑问题是allActions是一个Action对象列表,所以当它被添加到列表中时,类型可能会从匿名类更改,并恢复为默认方法.
有关如何维护Action类的不同匿名版本列表的任何想法?我希望能够根据赋予操作的id调用这些不同的doAction()方法.
顺便说一下,这是我第一次遇到匿名课程.我想我理解这个概念,但实际上使用它们是另一个故事.