作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类 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/
我是一名优秀的程序员,十分优秀!