java基礎(chǔ)(五)-對(duì)泛型的理解

定義:編寫的代碼可以被不同的對(duì)象類型所重用。
泛型的本質(zhì)是參數(shù)化類型。所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)。
比如:集合類 linkedlist

出現(xiàn):有許多原因促成了泛型的出現(xiàn),而最引人注意的一個(gè)原因,就是為了創(chuàng)建容器類。

泛型好處:
類型安全:提高java程序的類型安全,編譯時(shí)期就可以檢查出類型不正確導(dǎo)致的類型轉(zhuǎn)換異常,消除強(qiáng)制類型轉(zhuǎn)換。

泛型有三種形式:泛型類、泛型方法、泛型接口

泛型類:未知類型應(yīng)用于整個(gè)類的時(shí)候,可以使用泛型類。

class DataHolder<T>{
    T item;
    
    public void setData(T t) {
        this.item=t;
    }
    
    public T getData() {
        return this.item;
    }
}

泛型方法:當(dāng)未知類型值應(yīng)用于方法的時(shí)候,可以使用泛型方法,類型的定義要放到返回類型或者void的前面。

  /**
     * 泛型方法
     * @param e
     */
    public <E> void PrinterInfo(E e) {
        System.out.println(e);
    }

泛型接口:類似于泛型類

public interface Generator<T> {
    T next();
}

泛型的通配符:

<?> 無(wú)限制通配符
<? extends E> extends 關(guān)鍵字聲明了類型的上界,表示參數(shù)化的類型可能是所指定的類型,或者是此類型的子類
<? super E> super 關(guān)鍵字聲明了類型的下界,表示參數(shù)化的類型可能是指定的類型,或者是此類型的父類

泛型的類型擦除:

當(dāng)編譯器對(duì)帶有泛型的java代碼進(jìn)行編譯時(shí),它會(huì)去執(zhí)行類型檢查和類型推斷,然后生成普通的不帶泛型的字節(jié)碼,這種普通的字節(jié)碼可以被一般的 Java 虛擬機(jī)接收并執(zhí)行,這在就叫做 類型擦除(type erasure)。

擦除的實(shí)現(xiàn)原理:

Java 編輯器會(huì)將泛型代碼中的類型完全擦除,使其變成原始類型。
當(dāng)然,這時(shí)的代碼類型和我們想要的還有距離,接著 Java 編譯器會(huì)在這些代碼中加入類型轉(zhuǎn)換,將原始類型轉(zhuǎn)換成想要的類型。這些操作都是編譯器后臺(tái)進(jìn)行,可以保證類型安全。
總之泛型就是一個(gè)語(yǔ)法糖,它運(yùn)行時(shí)沒有存儲(chǔ)任何類型信息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 泛型是Java 1.5引入的新特性。泛型的本質(zhì)是參數(shù)化類型,這種參數(shù)類型可以用在類、變量、接口和方法的創(chuàng)建中,分別...
    何時(shí)不晚閱讀 3,126評(píng)論 0 2
  • Java 泛型是 Java 5 引入的一個(gè)重要特性,相信大多數(shù) Java 開發(fā)者都對(duì)此不陌生,但是泛型背后的實(shí)現(xiàn)原...
    JohnnyShieh閱讀 2,165評(píng)論 6 37
  • ??在Effective中講到泛型之處提到了一個(gè)概念,類型擦除器,這是什么呢?接下來(lái)我們跟隨這篇文章探索類型擦除的...
    凌云_00閱讀 2,257評(píng)論 0 8
  • 參數(shù)類型的好處 在 Java 引入泛型之前,泛型程序設(shè)計(jì)是用繼承實(shí)現(xiàn)的。ArrayList 類只維護(hù)一個(gè) Obje...
    杰哥長(zhǎng)得帥閱讀 959評(píng)論 0 3
  • 【0530我在悅讀】6377-薩摩 三期活動(dòng)第30次打卡 書名:《西爾斯親密育兒百科》 作者:威廉·西爾斯,瑪莎·...
    薩摩Summerciao閱讀 219評(píng)論 0 1

友情鏈接更多精彩內(nèi)容