我目前在匿名方法覆盖和继承方面遇到了一个奇怪的问题。很难解释清楚,所以从这里开始是我的代码的表示:
public abstract class A {
public void draw() {
someAction();
}
}
public class B extends A {
// Other methods
}
ArrayList< A > listA = new ArrayList< A >();
B objectB = new B() {
@Override
public void draw() {
someActionOverriden();
}
}
listA.add( objectB );
for( A item : listA ) {
item.draw();
}
问题是,draw()
匿名覆盖的方法永远不会被调用。我想这可能是因为item
is of class A
,所以它永远不会去匿名方法,但是有没有办法实现这种设计?
编辑:另一件事:如果我尝试objectB.draw()
,将调用匿名方法!