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

标签 java overriding overloading anonymous-class

我有一个类 Action,它有一个名为 doAction() 的方法。对于我添加到名为 allActions 的 Action 列表中的每个新 Action ,此方法的存在只是为了覆盖它。

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() 方法。

对了,我还是第一次接触匿名类。我认为我理解这个概念,但实际使用它们是另一回事。

最佳答案

您正在使用 public void doAction(Word w1, Word w2) 但您在父级中有 public void doAction()。所以父方法不会被覆盖。

关于java - 如何在 Java 中使用匿名类重载方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13757320/

相关文章:

c++ - 命名空间中的模板 friend bool重载冲突

java - Java/Android 中的 Modbus TCP

Java - Hibernate 异常 - 无法映射反馈[来自反馈]

javascript - 覆盖 Console.log

python - 如何覆盖 peewee 中的 create_table() 以创建额外的历史记录?

java - 覆盖 hashCode() 和 equals() 方法

c++ - 为什么这个带有参数类型转换的函数重载不明确?

java - 如何使用Java读取CSV中第 'x'行和第 'y'列的值?

java - 检查数组中是否存在重复的索引值?

java - 如何使用 Mockito 验证重载方法的调用次数?