1
기본적으로 특정 클래스의 서브 클래스를 보유 할 수있는 목록 필드를 포함하는 추상 클래스가 있어야하며 특정 클래스의 특정 서브 클래스를 저장하는 구체적인 클래스를 작성해야합니다 . 더 나은 코드 설명Java 일반 콜렉션 및 상속
나는 확신 :
public class A {
}
public class B extends A {
}
public abstract class AbsClass {
protected List<? extends A> list;
}
public class ConClass extends AbsClass {
list = new ArrayList<B>();
}
위의 코드와 함께 내가 컴파일러 오류
The method add(capture#3-of ? extends A) in the type List < capture#3-of ? extends A> is not applicable for the arguments (B)
목록이 인스턴스화 라인을 얻을.
어떻게 작동합니까?
당신의 컴파일 오류에 대해서 : 심지어 서브 클래스에 인스턴스를 이동할 필요가 없습니다 그 시점에서 물론
당신은 세부 사항을 떠난다. 이 에러는 당신의 할당이 아니라'list.add' 메소드를 호출하는 것과 관련이 있습니다. 다른 이유로 코드가 컴파일되지 않습니다. 즉 할당은 생성자 또는 초기화 자 블록 외부에서 발생합니다. –
는 저에게 잘 작동합니다 ... 반드시해야합니다 ... –
@ mlaw 아니오, 그렇지 않습니다. 아무데도 을 선언하지 않았습니다! 우리는 그것이 선언 된 곳을 추측해야합니다. – corsiKa