搜尋
首頁JavaJava入門深入學習java之泛型

深入學習java之泛型

Nov 27, 2019 pm 06:11 PM
java泛型

深入學習java之泛型

概念:泛型,即「參數化類型」。就是將原來具體的型別參數化,類似方法中的變數參數,此時型別也定義成參數形式(可以稱之為型別形參),然後在使用/呼叫時傳入具體的型別(型別實參)。

本質:為了參數化類型(在不建立新的類型的情況下,透過泛型指定的不同類型來控制形參具體限制的類型)。也就是說在泛型使用過程中,操作的資料型別被指定為一個參數,這種參數型別可以用在類別、介面和方法中,分別稱為泛型類別、泛型介面、泛型方法。

三種使用方式:泛型類別、泛型介面、泛型方法

類型通配符:

1 )型別通配符一般是使用?代替具體的類型參數。例如List> 在邏輯上是List,List等所有List的父類別。

2)型別通配符上線透過形如List來定義,如此定義就是通配符泛型值接受Number及其下層子類別型別。

泛型提供了編譯時類型安全監測機制,該機制允許程式設計師在編譯時偵測到非法的類型。泛型的本質是參數化類型,也就是說所操作的資料類型被指定為一個參數。例如我們要寫一個排序方法,能夠對整數陣列、字串陣列甚至其他任何類型的陣列進行排序,我們就可以使用Java泛型。

1.泛型方法

你可以寫一個泛型方法,該方法在呼叫時可以接收不同類型的參數。根據傳遞給泛型方法的參數類型,編譯器適當地處理每一個方法呼叫。

// 泛型方法 printArray 
     public static  void printArray( E[] inputArray )
     { 
         for ( E element : inputArray ){ 
             System.out.printf( "%s ", element );
         }
     }

1) 表示該通配符所代表的型別是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;
 }</t>

3.類型擦除

Java中的泛型基本上都是在編譯器這個層次來實現的。在產生的Java字節碼中是不包含泛型中的類型資訊的。 使用泛型時加上的型別參數,會被編譯器在編譯時去掉,這個過程就稱為型別擦除。 如程式碼中定義的List和List等類型,在編譯之後都會變成List。 JVM看到的只是List,而由泛型附加的類型資訊對JVM來說時不可見的。 類型擦除的基本過程也比較簡單,第一次是找到用來取代型別參數的具體類,這個具體類一般是Object。如果指定了類型參數的上界的話,則使用這個上界,把程式碼中的型別參數都替換成具體類別。

本文來自 java入門 欄目,歡迎學習!

#

以上是深入學習java之泛型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:cnblogs。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能