현재 익명 메서드 재정의 및 상속에 이상한 문제가 있습니다. 그것은 시작하는, 그래서 여기에 명확하게 설명하기 어렵 내 코드의 표현입니다 :익명 클래스가 작동하지 않습니다.
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
이 클래스 A
이기 때문에 이것을 추정 할 수 있습니다. 따라서 익명의 방법으로는 절대 갈 수 없지만 이런 종류의 디자인을 구현할 수있는 방법이 있습니까?
EDIT : 다른 것 : objectB.draw()
을 시도하면 익명 메소드가 호출됩니다!
컴파일러 오류를 제거하면 정상적으로 작동합니다. 현재'B' 클래스는'A' 클래스를 확장하지 않습니다. 따라서,'listA.add'는 컴파일되지 않습니다. –
사실 오타 오류 일뿐입니다.) –
정상 작동합니다. 'someActionOverriden()'이 무엇인가 보이고 있습니까? –