Snailclimb / Snailclimb/JavaGuide

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

Aperta
#1,692 2 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

perfect content
Lingua principale
JavaScript
Stelle
159k
Fork
46.1k
Merge medio
14h 36m
PR unite (30g)
6

Descrizione

常用的通配符为: 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. 只需要读的,优先使用通配符,通配符让代码看起来更简单。

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Non sono indicati né un file né un test. Inizia individuando nel repository la documentazione sui generics o sui wildcard Java, quindi verifica le spiegazioni e gli esempi dell’issue rispetto alla guida circostante. Il lavoro è completato quando l’ambito previsto è concordato e la documentazione pertinente spiega accuratamente i wildcard con limite superiore, senza limiti e con limite inferiore.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
documentation
Tipo di issue
Documentazione
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.