2014-02-11 3 views
0
class a{} 
class b extends a{} 
class c <? extends b> extends b{} 
public class d { 
     public static void main(String[] args) { 
     c<c> n = new c<c>(); 
     } 
} 

나는 SCJP를 읽고있다. 나는 class<?>class<? extends anything>이라는 generic 클래스의 개념을 얻지 못했습니다. "anything"을 확장하는 클래스를 전달할 수 있다면 위의 코드가 작동하지 않는 이유는 무엇입니까?generics로 클래스 선언 java

이를 설명해주십시오, 매우 혼란

감사

답변

2

그것은 이제까지 해당 매개 변수를 참조하지 않고 형식 매개 변수가있는 클래스를 선언하는 것은 말이되지 않는다. 그러므로 그런 수업을 선포하는 것은 아닙니다. 형식 매개 변수에 이름을 지정해야합니다.

변경

class c <? extends b> extends b{} 

이제 형식 매개 변수 T, 예를 들어, 참조 할 수 c 클래스 내에서

class c <T extends b> extends b{} 

에 메소드와 변수를 선언한다.

2

정확한 오류 메시지는 제공하지 않았지만 유형 매개 변수를 정의 할 때 와일드 카드를 사용할 수 없다고 생각합니다.

시도 :

class c <T extends b> extends b{} 

참고 :

class C <T extends B> extends B{} 
: 그것은 대문자와 클래스 이름을 시작하는 규칙 때문에 소용
관련 문제