java中在哪些情况下需要使用泛型通配符如:? extends T 或者 ? super T
迷茫
迷茫 2017-04-18 10:49:24
0
2
802

至于什么是泛型通配符,我是知道的,但是不知道具体在项目里的使用场景,比如哪些情况下,我们创建的类或者接口需要用到泛型通配符呢

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(2)
阿神

Effective Java: Producer Extends, Consumer Super라는 책에 나오는 이 문장을 기억하세요.
자세한 설명은 http://stackoverflow.com/ques...

보충제

TreeMap에는 생성자가 있습니다:

으아악

Comparator<K> 또는 Comparator< 확장 대신 Comparator<? super K> 유형을 지정해야 하는 이유를 생각해 보세요.

PHPzhong

저는 Java를 작성하지 않지만 모든 제네릭은 상호 운용 가능합니다. 이때 우연히 Taobao OPEN의 SDK를 보게 되었습니다. 이것은 일반 와일드카드를 가장 잘 설명하는 실제 예입니다.

특히 Java 버전의 SDK를 찾았습니다. https://github.com/ggd543/tao...를 참조하세요.

으아악

모든 API 요청은 execute을 통해 작동되며 이 메서드는 ? extends T 와일드카드 상한을 사용하여 반환되는 개체를 TaobaoResponse의 하위 클래스로 제한합니다.

간단히 말하면 제약입니다.

Taobao SDK의 관점에서 와일드카드 상한의 가장 큰 값은 모든 Taobao SDK 요청에 의해 반환된 결과에 API의 요청 상태를 나타내는 codemsg와 같은 몇 가지 공통 매개변수가 있다는 것입니다. .

자, 다시 돌아가서 execute의 구체적인 구현을 살펴보겠습니다.

으아악

본문의 catch에는 localResponse이 있고 해당 유형은 T이지만 이 T는 단순한 Object 개체가 아닙니다. T의 유형은 친절해요. TaobaoResponse

즉,

이 인스턴스화될 때 해당 유형은 최소한 T의 하위 클래스이고 TaobaoResponse의 정의는 다음과 같습니다. TaobaoResponse 으아악

그러면 다음과 같은 코드를 직접 볼 수 있습니다.

으아악

보세요, 모든 공통 매개변수를 균일하게 처리할 수 있다는 점이 흥미롭지 않나요?

그래서 Taobao SDK의 관점에서 보면 이것이 일반 와일드카드의 의미입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿