至于什么是泛型通配符,我是知道的,但是不知道具体在项目里的使用场景,比如哪些情况下,我们创建的类或者接口需要用到泛型通配符呢
业精于勤,荒于嬉;行成于思,毁于随。
Effective Java: Producer Extends, Consumer Super라는 책에 나오는 이 문장을 기억하세요. 자세한 설명은 http://stackoverflow.com/ques...
보충제
TreeMap에는 생성자가 있습니다:
TreeMap
Comparator<K> 또는 Comparator< 확장 대신 Comparator<? super K> 유형을 지정해야 하는 이유를 생각해 보세요.
저는 Java를 작성하지 않지만 모든 제네릭은 상호 운용 가능합니다. 이때 우연히 Taobao OPEN의 SDK를 보게 되었습니다. 이것은 일반 와일드카드를 가장 잘 설명하는 실제 예입니다.
특히 Java 버전의 SDK를 찾았습니다. https://github.com/ggd543/tao...를 참조하세요.
모든 API 요청은 execute을 통해 작동되며 이 메서드는 ? extends T 와일드카드 상한을 사용하여 반환되는 개체를 TaobaoResponse의 하위 클래스로 제한합니다.
execute
? extends T
TaobaoResponse
간단히 말하면 제약입니다.
Taobao SDK의 관점에서 와일드카드 상한의 가장 큰 값은 모든 Taobao SDK 요청에 의해 반환된 결과에 API의 요청 상태를 나타내는 code 및 msg와 같은 몇 가지 공통 매개변수가 있다는 것입니다. .
code
msg
자, 다시 돌아가서 execute의 구체적인 구현을 살펴보겠습니다.
본문의 catch에는 localResponse이 있고 해당 유형은 T이지만 이 T는 단순한 Object 개체가 아닙니다. T의 유형은 친절해요. TaobaoResponse
catch
localResponse
T
이 인스턴스화될 때 해당 유형은 최소한 T의 하위 클래스이고 TaobaoResponse의 정의는 다음과 같습니다. TaobaoResponse 으아악
으아악
Effective Java: Producer Extends, Consumer Super라는 책에 나오는 이 문장을 기억하세요.
자세한 설명은 http://stackoverflow.com/ques...
보충제
으아악TreeMap
에는 생성자가 있습니다:Comparator<K> 또는 Comparator< 확장 대신 Comparator<? super K> 유형을 지정해야 하는 이유를 생각해 보세요.
저는 Java를 작성하지 않지만 모든 제네릭은 상호 운용 가능합니다. 이때 우연히 Taobao OPEN의 SDK를 보게 되었습니다. 이것은 일반 와일드카드를 가장 잘 설명하는 실제 예입니다.
특히 Java 버전의 SDK를 찾았습니다. https://github.com/ggd543/tao...를 참조하세요.
으아악모든 API 요청은
execute
을 통해 작동되며 이 메서드는? extends T
와일드카드 상한을 사용하여 반환되는 개체를TaobaoResponse
의 하위 클래스로 제한합니다.간단히 말하면 제약입니다.
Taobao SDK의 관점에서 와일드카드 상한의 가장 큰 값은 모든 Taobao SDK 요청에 의해 반환된 결과에 API의 요청 상태를 나타내는
code
및msg
와 같은 몇 가지 공통 매개변수가 있다는 것입니다. .자, 다시 돌아가서
으아악execute
의 구체적인 구현을 살펴보겠습니다.본문의
즉,catch
에는localResponse
이 있고 해당 유형은T
이지만 이 T는 단순한 Object 개체가 아닙니다.T
의 유형은 친절해요.TaobaoResponse
이 인스턴스화될 때 해당 유형은 최소한
그러면 다음과 같은 코드를 직접 볼 수 있습니다.T
의 하위 클래스이고TaobaoResponse
의 정의는 다음과 같습니다.TaobaoResponse
으아악으아악
보세요, 모든 공통 매개변수를 균일하게 처리할 수 있다는 점이 흥미롭지 않나요?