[Java] Short Introduction to Wildcard

SC Tuan
2 min readJun 14, 2019

--

Java 使用 wildcard 來做出像是 Swift 的 Any 一樣的功能。語法是 ?

使用

如果不想在 List 的宣告指定明確的類型,可以用 ?

List<?> list = new ArrayList<?>();
list.add("Hello Wildcard");

兩種規則

你可以透過兩種修飾字來指定你允許的 class。

Upper Bound

使用 extends ,意思是你允許任何某特定 type 的 subtype 。

比方, List<? extends Number> 就是宣告一個 List 其中的元素 type 都必須是 Number 的 subtype。它允許的 type 諸如 IntegerDouble

Lower Bound

使用 super ,意思是你允許任何某特定 type 的 supertype。

比方, List<? super Number> 就是宣告一個 List 其中的元素 type 都必須是 Number 的 suertype。它允許的 type 諸如 Number 或是 Object

轉型

如果要轉成特定的型別也很簡單,就是:

List<?> list = Array.asList(4,5,9);
List<Number> number = (List<Number>) list;

--

--

SC Tuan
SC Tuan

Written by SC Tuan

iOS developer(Obj-C & Swift) / Web developer (Java, Javascript, CSS,HTML)

No responses yet