至于什么是泛型通配符,我是知道的,但是不知道具体在项目里的使用场景,比如哪些情况下,我们创建的类或者接口需要用到泛型通配符呢
业精于勤,荒于嬉;行成于思,毁于随。
『効果的な Java』という本の次の文を思い出してください: プロデューサーは拡張し、コンシューマーはスーパーになります。 ここで詳しく説明されています: http://stackoverflow.com/ques...
補足
にはコンストラクターがあります:TreeMap リーリー
TreeMap
私は Java は書きませんが、すべてのジェネリックは相互リンクされています。私はこの時たまたま Taobao OPEN の SDK を見ていました。これは一般的なワイルドカードを最もよく説明する実際の例です。
特に Java バージョンの SDK を見つけました。参照: https://github.com/ggd543/tao...
すべての API リクエストは execute を通じて操作され、このメソッドは ?extends T ワイルドカードの上限を使用して、返されるオブジェクトを TaobaoResponse のサブクラスに制限します。 >。 execute 来操作的,而这个方法就采用的 ? extends T 通配符上界,来限制返回的对象必须是 TaobaoResponse 的子类。
execute
?extends T
TaobaoResponse
? extends T
简单点说就是约束。
那从淘宝SDK的角度来看,通配符上界最大的价值是淘宝所有SDK请求返回的结果都会带有一个 code、msg 等一些通用的参数来表示API的请求状态。
code
msg
那好,我们回过头来看 execute 的具体实现:
-- url: https://github.com/ggd543/taobao-sdk-java/blob/master/src/main/java/com/taobao/api/TaobaoClient.java /** * 执行TOP公开API请求。 * @param <T> * @param request 具体的TOP请求 * @return * @throws ApiException */ public <T extends TaobaoResponse> T execute(TaobaoRequest<T> request) throws ApiException ;
注意到这里的 catch 体中 localResponse,他的类型 T,但这个T并不是简单的一个Object对象,由于前面已经限定 T 的类型必须是 TaobaoResponse 的子类。
catch
localResponse
T
那就意味者,当对 T 进行实例后,其类型至少是 TaobaoResponse 的子类,而对于 TaobaoResponse
リーリー
TaabaoResponse
『効果的な Java』という本の次の文を思い出してください: プロデューサーは拡張し、コンシューマーはスーパーになります。 ここで詳しく説明されています: http://stackoverflow.com/ques...
補足
にはコンストラクターがあります:
Comparator<K> または Comparator<? の代わりに Comparator<super K> を指定する必要がある理由を考えてみてください。TreeMap
リーリー私は Java は書きませんが、すべてのジェネリックは相互リンクされています。私はこの時たまたま Taobao OPEN の SDK を見ていました。これは一般的なワイルドカードを最もよく説明する実際の例です。
特に Java バージョンの SDK を見つけました。参照: https://github.com/ggd543/tao...
リーリーすべての API リクエストは
execute
を通じて操作され、このメソッドは?extends T
ワイルドカードの上限を使用して、返されるオブジェクトをTaobaoResponse
のサブクラスに制限します。 >。execute
来操作的,而这个方法就采用的? extends T
通配符上界,来限制返回的对象必须是TaobaoResponse
的子类。简单点说就是约束。
那从淘宝SDK的角度来看,通配符上界最大的价值是淘宝所有SDK请求返回的结果都会带有一个
code
、msg
等一些通用的参数来表示API的请求状态。那好,我们回过头来看
execute
的具体实现:注意到这里的
catch
体中localResponse
,他的类型T
,但这个T并不是简单的一个Object对象,由于前面已经限定T
的类型必须是TaobaoResponse
的子类。那就意味者,当对
簡単に言うと制約です。T
进行实例后,其类型至少是TaobaoResponse
的子类,而对于TaobaoResponse
code
やmsg
などの共通パラメーターが含まれることです。 APIのリクエストステータスを示します。execute
の具体的な実装を見てみましょう:リーリー
ここで、catch
本文のlocalResponse
の型はT
ですが、この T は単純な Object オブジェクトではないことに注意してください。T
を修飾する型は、TaobaoResponse
のサブクラスである必要があります。 🎜 🎜つまり、T
がインスタンス化されるとき、その型は少なくともTaabaoResponse
のサブクラスであり、TaobaoResponse
の定義は次のようになります。 🎜 リーリー 🎜次のようなコードを直接見ることができます: 🎜 リーリー 🎜すべての共通パラメータを均一に処理できるのは興味深いと思いませんか? 🎜 🎜淘宝 SDK の観点から見ると、これが一般的なワイルドカードの意味です。 🎜