Snailclimb / Snailclimb/JavaGuide

泛型之常用的通配符有哪些?

オープン
#1,692 コメント 2 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

perfect content
主要言語
JavaScript
スター
159k
フォーク
46.1k
平均マージ
14時間 36分
マージ済み PR(30日)
6

説明

常用的通配符为: T,E,K,V,?
? 表示不确定的 Java 类型
T (type) 表示具体的一个 Java 类型
K V (key value) 分别代表 Java 键值中的 Key Value
E (element) 代表 Element

上面说的 T、E、K、V 其实都只是类型参数。而 ? 才是通配符,而且准确来说,是无限定通配符。

通配符分为有限定通配符,无限定通配符,超类型通配符。

有限定通配符:形式类似于 <? extends E>,E 如果为类,只有传入的类型参数为 E 的本身及子类才可以使用,E 如果为接口,则必须实现该接口,只能读不能写,可以用类型参数替代。

  public void addAll(DynamicArray<? extends E> array) {

 }

无限定通配符:形式为 <?>,都可以使用,只能读不能写,可以用类型参数替代。

  public void addAll(DynamicArray<?> array) {
 
 }

超类型通配符:形式为 <? super E>,可以实现对象往父类型写入,不可以用类型参数替代。

   public void copyTo(DynamicArray<? super E> dest) {

    }

简单总结
其中有限定通配符和无限定通配符只能读不能写,可以被类型参数替代。而超类型通配符可以使用对象往父类型写入,不可以用类型参数替代。

有限定通配符和无限定通配符既然能被类型参数替换,该如何选择使用的?
应该根据使用场景:

  1. 需要写入的,必须使用类型参数。
  2. 只需要读的,优先使用通配符,通配符让代码看起来更简单。

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

ファイルもテストも指定されていません。まずリポジトリ内で Java のジェネリクスまたはワイルドカードのドキュメントを探し、次に issue の説明と例を周辺のガイドと照らし合わせて確認してください。意図したスコープについて合意され、関連するドキュメントで上限付き、無制限、下限付きのワイルドカードが正確に説明されていれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
documentation
issue の種類
ドキュメント
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。