Java泛型
泛型提供了編譯時類型安全性偵測機制,該機制允許程式設計師在編譯時偵測到非法的類型。泛型的本質是參數化類型,也就是說所操作的資料類型被指定為一個參數。
例如我們要寫一個排序方法,能夠對整數陣列、字串陣列甚至其他任何類型的陣列進行排序,我們就可以使用 Java 泛型。
免費線上學習影片推薦:java線上影片
1.泛型方法
你可以寫泛型方法,該方法在呼叫時可以接收不同類型的參數。根據傳遞給泛型方法的參數類型,編譯器適當地處理每一個方法呼叫。
例如:
public static < E > void printArray( E[] inputArray ){ for ( E element : inputArray ){ System.out.printf( "%s ", element ); } }
泛型邊界
(1) extends T>表示該通配符所代表的類型是T 類型的子類別。
(2) super T>表示該通配符所代表的類型是 T 類型的父類別。
2.泛型類別
泛型類別的宣告和非泛型類別的宣告類似,除了在類別名稱後面加入了型別參數宣告部分。和泛型方法一樣,泛型類別的型別參數宣告部分也包含一個或多個型別參數,參數間以逗號隔開。
一個泛型參數,也被稱為一個類型變量,是用來指定一個泛型類型名稱的識別碼。因為他們接受一個或多個參數,這些類別被稱為參數化的類別或參數化的類型。
例如:
public class Box<T> { private T t; public void add(T t) { this.t = t; } public T get() { return t; } }
3.型別通配符?
型別通配符一般是使用?來取代特定的型別參數。例如List>在邏輯上是List,List等所有List<具體型別實參>的父類別。
4.類型擦除
Java 中的泛型基本上都是在編譯器這個層次來實現的。在產生的 Java 位元組程式碼中是不包含泛型中的型別資訊的。使用泛型的時候加上的型別參數,會被編譯器在編譯的時候去掉。這個過程就稱為類型擦除。
如程式碼中定義的 List和 List等類型,在編譯之後都會變成 List。 JVM 看到的只是 List,而由泛型附加的類型資訊對 JVM 來說是不可見的。
類型擦除的基本過程也比較簡單,首先是找到用來取代類型參數的具體類別。這個具體類別一般是 Object。如果指定了類型參數的上界的話,則使用這個上界。把程式碼中的類型參數都替換成具體的類別。
java相關文章教學:java語言入門
#以上是關於java泛型的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!