2011-02-17 5 views
0

generic 클래스를 확장하여 (다른) generic 클래스를 확장하는 클래스가 있습니다.generic을 확장하는 generic을 확장하는 클래스를 선언하는 방법

class A extends B<Type1><C<Type2>> 

하지만 위의 실제로 컴파일되지 않습니다 :

class B<TypeB> extends C{} 
class C<TypeC>{} 

지금 내 문제

는 뭔가 같이해야 클래스를 생성 할 때 TypeC를 지정하는 방법입니다.

답변

6

B 귀하의 자명 한 일 입니은 다음과 같아야합니다

class B<TB, TC> extends C<TC> { 
} 

및 대상은

class A extends B<ConcreteB, ConcreteC> { 
} 
+0

10 배는 아주 자연 실제로 – Max

+0

당신의주의해야 한 것은 당신의 C 클래스는 실제로 경우 보인다 될 것입니다 C 와 같은 것입니다. B 형을 B 형으로 둘러 쌓으면 B 은 C (이 경우 TC가 Foo를 확장하는 곳)으로 B를 정의합니다. B대신 B를 반환하는 메서드처럼) C에 대한 TC 정보를 잃게됩니다. C가 TC를 반환하는 대신 F를 반환하는 메서드를 사용하면 generics가 여기서 암시 하듯이 Java는 F를 반환한다는 것을 알아낼 수 있습니다 (On b.getFoo()) – JBirch

관련 문제