제네릭에 대한 질문이 있습니다.한계가있는 제네릭을 컴파일하는 중 오류가 발생했습니다.
static {
final List<Class<? extends A>> typeList = Arrays.asList(
C.class,
D.class
);
}
및
public interface A {…}
public class C extends B {…}
public class D extends B {…}
public abstract class B implements A {…}
안드로이드 스튜디오 불평과 위의 라인 final List…
에 컴파일되지 않습니다 :
내가 클래스 내부의이 조각을 가지고 (의이 경우 1를 부르 자)
를호환되지 않는 유형
필수 목록 < 클래스 <? 확장 A > >
발견 목록 < 클래스 <? 이전에이 코드를 가지고, B에게 > >
를 확장하지만 (의이 경우 2를 부르 자)는
static {
final List<Class<? extends A>> typeList = Arrays.asList(
C.class,
D.class
);
}
및
public interface A {…}
public class C implements A {…}
public class D implements A {…}
및 컴파일합니다.
그래서, 난 그냥이에 경우 1을 변경하는 문제를 좁히는을 위해, 시도 :
static {
final List<Class<? extends A>> typeList = Arrays.asList(
B.class
);
}
는 B이 경우 두 단지 C와 D처럼 구현주의하시기 바랍니다. 그러나 컴파일러는 여전히 불평합니다.
이 문제를 이해하는 데 아이디어가 부족합니다. Java Language Specification 유형 및 값 장을 읽었지만 아무 것도 읽지 않습니다.
StackOverflow에서 검색 한 결과 비슷한 질문을 찾지 못했습니다.
모든 포인터? (추신 : 누군가가하기 전에 XKCD 필수)
나를 위해 잘 컴파일하십시오. Java 7을 사용하는 경우 명시적인 형식 인수를 사용할 수 있습니다. –
Sotiros Delimanolis, 실제로이 질문과 중복됩니다. 이전에 검색하는 데 잘못된 용어를 사용했습니다. –