一.泛型
在Java中,泛型(Generics)是JDK 5.0引入的一個新特性,它允許在定義類、接口和方法時使用類型參數(type parameters)。類型參數在使用前必須先被實際類型(如Integer、String等)替代,這個過程稱作類型實例化或類型擦除。泛型提供了編譯時類型安全,減少了運行時的類型轉換錯誤,并允許創建可重用的組件,這些組件能夠以一種類型無關的方式工作。
泛型的主要優點包括:
類型安全:通過泛型,編譯器能夠在編譯時捕獲許多類型錯誤,而不是等到運行時。
代碼重用:泛型允許我們編寫類型無關的代碼,提高了代碼的復用性。
簡化代碼:泛型減少了代碼中的類型轉換和裝箱/拆箱操作,使代碼更加簡潔。
在Java中,泛型可以應用于類、接口、方法和變量中。泛型類:
public class Box<T> {
private T t; public void set(T t) {
this.t = t;
} public T get() {
return t;
}
}
泛型接口:
public interface Comparable<T> {
int compareTo(T o);
}
泛型方法:
public class GenericsTest {
public static <T> void printArray(T[] a) {
for (T element : a) {
System.out.println(element);
}
}
}
泛型變量:
List<String> myList = new ArrayList<String>();
在泛型中,類型參數(Type Parameters)是用尖括號<>包圍的,如Box<T>中的T。類型參數在使用泛型類或方法時,被實際類型(Actual Types)替代,如Box<String>中的String。
通配符泛型:
Java泛型還支持通配符類型參數(Wildcard Type Parameters),如?、? extends T和? super T。這些通配符允許更加靈活的泛型使用,尤其是在處理不確定類型或需要兼容多種類型的情況下。
類型擦除:
雖然Java泛型在編譯時提供了類型安全性,但在運行時,所有的泛型信息都會被擦除,替換為Object類型或者具體的類型。這個過程叫做類型擦除(Type Erasure)。類型擦除確保了與舊版Java代碼的兼容性,因為舊版Java并不支持泛型。
泛型是Java提高類型安全性和代碼復用性的一個重要特性,使得編寫更加健壯和靈活的代碼成為可能。
二.List
在Java中,List 是一個接口,它屬于 java.util 包。List 接口表示一個有序的集合(也稱為序列),它允許存儲重復的元素。List 接口提供了許多方法來操作列表中的元素,例如添加、刪除、查找等。
Java中有多種實現 List 接口的類,最常用的包括 ArrayList 和