泛型之常用的通配符有哪些?
還沒有人認領這個 Issue。
評估
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 新手友好度
- 35/100
- Issue 類型
- 文件
- 描述清晰度
- 需要釐清
- 活躍度
- 停滯
- 技術堆疊
- java
研究方向
未指定檔案或測試。首先在儲存庫中定位 Java 泛型或萬用字元文件,然後根據周邊指南檢查 issue 中的說明和範例。確定預期範圍並使相關文件準確說明有界、無界和下界萬用字元後,即視為完成。
由索引模型根據 Issue 內容生成。
描述
常用的通配符为: 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) {
}
简单总结
其中有限定通配符和无限定通配符只能读不能写,可以被类型参数替代。而超类型通配符可以使用对象往父类型写入,不可以用类型参数替代。
有限定通配符和无限定通配符既然能被类型参数替换,该如何选择使用的?
应该根据使用场景:
- 需要写入的,必须使用类型参数。
- 只需要读的,优先使用通配符,通配符让代码看起来更简单。
- 主要語言
- JavaScript
- 星號
- 159k
- 分支
- 46.1k
- 平均合併
- 3 天 23 小時
- 30 天內合併 PR
- 6
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
Snailclimb/JavaGuide 的其他 Issue
-
難度 1/5 1 小時以內 新手友好度 72/100
Snailclimb/JavaGuide#2931 ·
-
[Issue] Maven 的中央仓库构件查询网址会自动跳转到另外一个网站可能已有人在做 @jcbl1 於 4 天前認領。 未關閉
難度 1/5 1 小時以內 新手友好度 65/100
Snailclimb/JavaGuide#2927 ·
-
難度 2/5 1-3 小時 新手友好度 45/100
Snailclimb/JavaGuide#2930 ·
-
master未關閉
Snailclimb/JavaGuide#2929 ·
-
難度 1/5 1 小時以內 新手友好度 45/100
Snailclimb/JavaGuide#2649 · 2 則留言 ·
查看 Snailclimb/JavaGuide 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 76/100
-
enhancement
難度 1/5 1-3 小時 新手友好度 85/100
holepunchto/hrpc-test#28 ·
-
good first issue
難度 1/5 1-3 小時 新手友好度 88/100
anoopcodehack/DevBoard#616 ·
維護者通常 2 天內回覆
-
idnits3
難度 2/5 1-3 小時 新手友好度 63/100
ietf-tools/idnits#319 ·
-
難度 1/5 1 小時以內 新手友好度 76/100
521xueweihan/HelloGitHub#3939 ·