Ingat ayat ini daripada buku Jawa Berkesan: Producer Extends, Consumer Super. Ia diterangkan secara terperinci di sini: http://stackoverflow.com/ques...
Suplemen
TreeMap mempunyai pembina:
public TreeMap(Comparator<? super K> comparator);
Anda boleh fikirkan mengapa anda perlu menentukan jenis Comparator<?
Saya tidak menulis Java, tetapi semua generik boleh dikendalikan. Saya kebetulan melihat SDK Taobao OPEN pada masa ini. Ini adalah contoh sebenar terbaik untuk menerangkan kad bebas generik.
Saya menjumpai versi Java SDK khas, lihat: https://github.com/ggd543/tao...
Semua permintaan API dikendalikan melalui execute, dan kaedah ini menggunakan ? extends T sempadan atas kad bebas untuk mengehadkan objek yang dikembalikan kepada subkelas TaobaoResponse.
Ringkasnya, ia adalah satu kekangan.
Dari perspektif SDK Taobao, nilai terbesar bagi sempadan atas kad bebas ialah hasil yang dikembalikan oleh semua permintaan SDK Taobao akan mempunyai beberapa parameter biasa seperti code dan msg untuk menunjukkan status permintaan API .
Baiklah, mari kita kembali dan lihat pelaksanaan khusus execute:
Perhatikan bahawa catch dalam badan di sini mempunyai localResponse dan jenisnya ialah T, tetapi T ini bukan objek Objek yang mudah, kerana jenis T mestilah sub-anak TaobaoResponse baik hati.
Ini bermakna apabila T dijadikan instantiated, jenisnya sekurang-kurangnya subkelas TaobaoResponse dan takrifan TaobaoResponse adalah seperti ini:
-- url: https://github.com/ggd543/taobao-sdk-java/blob/master/src/main/java/com/taobao/api/TaobaoResponse.java
public abstract class TaobaoResponse implements Serializable {
private static final long serialVersionUID = 5014379068811962022L;
@ApiField("code")
private String errorCode;
@ApiField("msg")
private String msg;
// more
}
Jadi anda boleh terus melihat kod seperti ini:
localResponse.setErrorCode(e.getErrCode());
Lihat, bukankah ia menarik? Semua parameter biasa boleh diproses secara seragam.
Jadi dari perspektif Taobao SDK, ini ialah maksud kad bebas generik.
Ingat ayat ini daripada buku Jawa Berkesan: Producer Extends, Consumer Super.
Ia diterangkan secara terperinci di sini: http://stackoverflow.com/ques...
Suplemen
TreeMap
mempunyai pembina:Anda boleh fikirkan mengapa anda perlu menentukan jenis Comparator<?
Saya tidak menulis Java, tetapi semua generik boleh dikendalikan. Saya kebetulan melihat SDK Taobao OPEN pada masa ini. Ini adalah contoh sebenar terbaik untuk menerangkan kad bebas generik.
Saya menjumpai versi Java SDK khas, lihat: https://github.com/ggd543/tao...
Semua permintaan API dikendalikan melalui
execute
, dan kaedah ini menggunakan? extends T
sempadan atas kad bebas untuk mengehadkan objek yang dikembalikan kepada subkelasTaobaoResponse
.Ringkasnya, ia adalah satu kekangan.
Dari perspektif SDK Taobao, nilai terbesar bagi sempadan atas kad bebas ialah hasil yang dikembalikan oleh semua permintaan SDK Taobao akan mempunyai beberapa parameter biasa seperti
code
danmsg
untuk menunjukkan status permintaan API .Baiklah, mari kita kembali dan lihat pelaksanaan khusus
execute
:Perhatikan bahawa
catch
dalam badan di sini mempunyailocalResponse
dan jenisnya ialahT
, tetapi T ini bukan objek Objek yang mudah, kerana jenisT
mestilah sub-anakTaobaoResponse
baik hati.Ini bermakna apabila
T
dijadikan instantiated, jenisnya sekurang-kurangnya subkelasTaobaoResponse
dan takrifanTaobaoResponse
adalah seperti ini:Jadi anda boleh terus melihat kod seperti ini:
Lihat, bukankah ia menarik? Semua parameter biasa boleh diproses secara seragam.
Jadi dari perspektif Taobao SDK, ini ialah maksud kad bebas generik.