2011-05-06 3 views
3

나는 자바 제네릭 (JDK 1.4 ... 1.3 레거시 코드에 오랜 시간 동안 완료되지 않고 근무하는 데에도) 나는 확실히이 이해하지 못하는 최신 상태로 자신을 데리고 오전 :자바 generics - 어떻게 읽어야합니까 : Foo <T extends Bar <? Foo를 확장 <T> >>?

public class Foo<T extends Bar<? extends Foo<T>>> { ... 

경우 FooBar은 두 가지 일반 클래스입니다.

내가 이해하지 못하기 때문에 이것을 어떻게 이해할 수 있습니까?

나는 Java generics에 대해 많이 읽었지만 약간의 편이성이있다. (최소한 초보자에게는).

+0

가능한 [순환 원문 참조 만들기] (http://stackoverflow.com/questions/2567595/creating-circular-generic-references) –

답변

4

음, FooT에 의해 매개 변수화되어야합니다. 그 T 자체는 UFoo<T>으로 확장되는 일부 유형 U에 대해 Bar<U>을 확장해야합니다. (여기서 "확장"은 "이 유형과 동일합니다"를 의미 할 수 있습니다.) 여기서 임의의 유형 이름으로 U을 사용했지만 선언문에서 이름이 지정되지 않으므로 ?입니다.

당신이 생각하기에는 약간 정신이 이상하지만, 일반적으로 이런 종류의 일이 생기면 상황이 더 간단 해집니다. 구체적인 예를들 수 있다면 좀 더 유용하게 설명 할 수 있습니다.

관련 문제