Java問號意思
Java 中的問號 "?" 通常用於類型推斷和變量聲明。它與 Java 7 引入的 "占位符" 類型一起使用,以簡化泛型編程和 varargs 方法調用。
以下是有關 "?" 在 Java 中的幾種用法:
-
泛型類和方法的類型變量: 當你定義一個泛型類或方法時,可以使用 "?" 作為占位符來表示一個未指定的類型。這允許你在使用泛型時避免指定具體的類型,除非在需要時才指定。
例如:
List<?> list = new ArrayList<>();
在上面的代碼中,
List<?>
表示一個未知類型的List
,這意味著你可以將list
用於讀取操作,但不能用於寫入操作,因為你不確定list
可以接受什麼樣的元素。 -
通配符類型: 你可以使用 "?" 來定義通配符類型,這允許你在使用泛型時有更多的靈活性。
例如:
List<? extends Number> list = new ArrayList<Integer>();
在上面的代碼中,
List<? extends Number>
表示一個List
,它可以包含任何數字類型的元素,包括Number
及其子類。 -
varargs 方法調用: 當你調用一個 varargs 方法時,可以使用 "?" 來表示一個未知數量的參數。
例如:
void func(List<String>... lists) { // ... } func(List<? extends String> list1, List<? extends String> list2);
在上面的代碼中,
func
方法接受一個或多個List<String>
作為參數。在調用func
方法時,你可以傳入一個或多個List
,只要它們的元素是String
或String
的子類。 -
未知類型的變量聲明: 在某些情況下,你可能想要聲明一個變量,但是不知道它的具體類型。在這種情況下,你可以使用 "?" 來表示一個未知類型的變量。
例如:
Object obj = new Object(); ? obj2 = obj;
在上面的代碼中,
obj2
的類型是Object
,因為obj
的類型是Object
。但是,如果你將obj
賦值給一個未知類型的變量,obj2
的類型可以是任何類型。
總之,"?" 在 Java 中用於表示一個未知或未指定的類型,這可以幫助你在編寫代碼時保持靈活性。