泛型之常用的通配符有哪些?
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Dokumentation
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- java
- Bereich
- documentation
Rechercherichtung
Es wird keine Datei und kein Test genannt. Beginne damit, die Dokumentation zu Java-Generics oder Wildcards im Repository zu finden, und prüfe dann die Erklärungen und Beispiele des Issues anhand des umliegenden Leitfadens. Die Arbeit ist abgeschlossen, wenn der beabsichtigte Umfang vereinbart ist und die relevante Dokumentation Wildcards mit oberen Schranken, unbeschränkte Wildcards und Wildcards mit unteren Schranken korrekt erklärt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
常用的通配符为: 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) {
}
简单总结
其中有限定通配符和无限定通配符只能读不能写,可以被类型参数替代。而超类型通配符可以使用对象往父类型写入,不可以用类型参数替代。
有限定通配符和无限定通配符既然能被类型参数替换,该如何选择使用的?
应该根据使用场景:
- 需要写入的,必须使用类型参数。
- 只需要读的,优先使用通配符,通配符让代码看起来更简单。
- Vorherrschende Sprache
- JavaScript
- Sterne
- 159k
- Forks
- 46.1k
- Ø Merge
- 1 T. 8 Std.
- Gemergte PRs (30 T.)
- 10
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Snailclimb/JavaGuide
-
失效链接替换 Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
Snailclimb/JavaGuide#2922 · 1 Kommentar ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 45/100
Snailclimb/JavaGuide#2649 · 2 Kommentare ·
-
perfect content
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 55/100
Snailclimb/JavaGuide#2453 · 3 Kommentare ·
-
关于Disruptor中填充了多少字节的补充 Offenperfect content
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
Snailclimb/JavaGuide#2259 · 2 Kommentare ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
Snailclimb/JavaGuide#2074 ·
Alle Issues in Snailclimb/JavaGuide
Ähnliche Issues
-
Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Automattic/safe-publish#594 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
dream-num/dsh-univer-office#104 ·
-
comp/dashboard invalid P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
NousResearch/hermes-agent#121143 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
avniproject/avni-webapp#1811 ·
-
area/auroraboot area/webui bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100