小编Jos*_*osh的帖子

如何在Java中使用匿名类重载方法?

我有一个类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()方法.

顺便说一下,这是我第一次遇到匿名课程.我我理解这个概念,但实际上使用它们是另一个故事.

java overriding overloading anonymous-class

2
推荐指数
3
解决办法
6645
查看次数

标签 统计

anonymous-class ×1

java ×1

overloading ×1

overriding ×1