제네릭, 와일드 카드 및 상속에 대해 조금 읽었습니다. 그러나 여전히 getFoo() 라인에서 에러가 발생하는 이유를 알 수 없습니다. doit (this); 누군가 이런 일이 발생하는 이유를 설명해 주실 수 있습니까? 그리고이를 수행하는 적절한 방법은 무엇입니까?java generics : 와일드 카드 및 하위 클래스 - 왜 이런 일이 발생합니까?
public class A<T> {
private Foo<T, ? extends A<T>> foo;
public Foo<T, ? extends A<T>> getFoo() {
return foo;
}
public void setFoo(Foo<T, ? extends A<T>> foo) {
this.foo = foo;
}
}
public class B extends A<Integer>{
public B() {
setFoo(new Bar());
getFoo().doit(this);
}
}
public class Bar implements Foo<Integer, B> {
@Override
public void doit(B a) {
System.out.println("some process");
}
}
public interface Foo<T, V extends A<T>> {
public void doit(V a);
}
질문에 컴파일러 오류가 있습니다. –