Java泛型變量的通配符主要有兩種:?
和 ? extends T
。它們在泛型編程中非常有用,可以提高代碼的靈活性和可讀性。
?
):
無限制通配符表示未知類型。當你不關心具體的類型參數時,可以使用這個通配符。例如,當你需要一個可以接受任意類型的列表作為參數時,可以使用無限制通配符。public void printList(List<?> list) {
for (Object item : list) {
System.out.println(item);
}
}
? extends T
):
上界通配符表示類型參數是T或其子類。當你需要一個可以接受特定類型及其子類的列表作為參數時,可以使用上界通配符。public void processNumbers(List<? extends Number> numbers) {
for (Number number : numbers) {
// 處理數字
}
}
? super T
):
下界通配符表示類型參數是T或其父類。當你需要一個可以接受特定類型及其父類的列表作為參數時,可以使用下界通配符。public void addIntegers(List<? super Integer> integers, Integer value) {
integers.add(value);
}
總結:
?
)表示未知類型,適用于不關心具體類型的場景。? extends T
)表示類型參數是T或其子類,適用于需要接受特定類型及其子類的場景。? super T
)表示類型參數是T或其父類,適用于需要接受特定類型及其父類的場景。