成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java泛型

snowLu / 2149人閱讀

摘要:定義什么是泛型,看表面的意思,泛型就是指廣泛的普通的類型。繼承關(guān)系泛型類在繼承時,可以明確父類泛型類的參數(shù)類型,也可以不明確。參考資料泛型就是這么簡單

1、定義

什么是泛型,看表面的意思,泛型就是指廣泛的、普通的類型。在java中是指把類型明確的工作推遲到創(chuàng)建對象或調(diào)用方法的時候才去明確的特殊的類型。
可一看一個簡單的例子:

List strings = new ArrayList();
strings.add("a String");
String aString = strings.get(0);

可以看到,通過菱形語法("<>")可以將List內(nèi)元素的類型限定為String類型。
需要注意的是<>內(nèi)的類型只能是引用類型,當然對于基本類型,可以使用對應(yīng)的包裝類型

2、使用泛型的好處

(1)首先就像上面那個例子一樣,使用泛型能夠限定集合中,如List, Set中元素的類型,保證一個集合中只有一個類型。(這樣也就能夠使用增強for來遍歷集合
(2)程序也能更加健壯(只要在編譯時期沒有出現(xiàn)警告,那么運行時期就不會出現(xiàn)ClassCastException異常)

3、泛型的基礎(chǔ)

(1)泛型類

泛型類也就是把泛型定義在類上,這樣用戶在使用類的時候才把類型給確定下來。

public class ObjectTool {
    private T obj;

    public T getObj() {
        return obj;
    }

    public void setObj(T obj) {
        this.obj = obj;
    }
}

可以看到上面這個程序,在使用時如果定義了類型,那么在使用時就可以不用進行強制類型轉(zhuǎn)換,直接就可以得到一個T類型的對象。

(2)泛型方法
有時候只關(guān)心某個方法,那么使用泛型時可以不定義泛型類,而是只定義一個泛型方法,如下

 public  void show(T t) {
        System.out.println(t);
    }

需要注意一下定義的格式,泛型必須得先定義才能夠使用。

(3)繼承關(guān)系
泛型類在繼承時,可以明確父類(泛型類)的參數(shù)類型,也可以不明確。
現(xiàn)在我們有如下的泛型類
//泛型類

public interface Inter {
    public abstract void show(T t);
}

①明確類型
//在實現(xiàn)泛型類時明確父類的類型

public class InterImpl implements Inter {
    @Override
    public void show(String s) {
        System.out.println(s);
    }
}

②不明確類型

public class InterImpl implements Inter {

    @Override
    public void show(T t) {
        System.out.println(t);
    }
}
(4)類型通配符

(1)無界
類型通配符我感覺上和泛型方法差不多,只是不用在使用前進行定義,例子如下:

public void processElements(List elements){
   for(Object o : elements){
      System.out.println(o);
   }
}

"?"可以接收任何類型。
(2)上界

public void processElements(List elements){
   for(A a : elements){
      System.out.println(a.getValue());
   }
}

這種情況下能夠接收A類或者A類的子類。
(3)下界

public static void insertElements(List list){
    list.add(new A());
    list.add(new B());
    list.add(new C());
}

這種情況下能夠接收A類或者A類的父類

(4)類型通配符和泛型方法

我認為這兩種方式是差不多的,不過在使用時,如果參數(shù)之間是有依賴關(guān)系的,那么可以使用泛型方法,否則就使用類型通配符。(如果一個方法的返回值、某些參數(shù)的類型依賴另一個參數(shù)的類型就應(yīng)該使用泛型方法,因為被依賴的類型如果是不確定的?,那么其他元素就無法依賴它)。

(5)開發(fā)相關(guān)

泛型通配符< ? extends T >來接收返回的數(shù)據(jù),此寫法的泛型集合不能使用 add 方  法, 而< ? super T >不能使用 get 方法,做為接口調(diào)用賦值時易出錯。

這個怎么來理解呢,當我們使用extends時,我們可以讀元素,因為元素都是A類或子類,可以放心的用A類拿出。
當使用super時,可以添加元素,因為都是A類或父類,那么就可以安全的插入A類。

參考資料:https://segmentfault.com/a/11... 泛型就是這么簡單

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75040.html

相關(guān)文章

  • java編程思想》—— 泛型

    摘要:引用泛型除了方法因不能使用外部實例參數(shù)外,其他繼承實現(xiàn)成員變量,成員方法,方法返回值等都可使用。因此,生成的字節(jié)碼僅包含普通的類,接口和方法。 為什么要使用泛型程序設(shè)計? 一般的類和方法,只能使用具體的類型:要么是基本類型,要么是自定義類的對應(yīng)類型;如果要編寫可以應(yīng)用于多種類型的代碼,這種刻板的限制對代碼的束縛就會很大。----摘自原書Ordinary classes and meth...

    CODING 評論0 收藏0
  • Java知識點總結(jié)(Java泛型

    摘要:知識點總結(jié)泛型知識點總結(jié)泛型泛型泛型就是參數(shù)化類型適用于多種數(shù)據(jù)類型執(zhí)行相同的代碼泛型中的類型在使用時指定泛型歸根到底就是模版優(yōu)點使用泛型時,在實際使用之前類型就已經(jīng)確定了,不需要強制類型轉(zhuǎn)換。 Java知識點總結(jié)(Java泛型) @(Java知識點總結(jié))[Java, Java泛型] [toc] 泛型 泛型就是參數(shù)化類型 適用于多種數(shù)據(jù)類型執(zhí)行相同的代碼 泛型中的類型在使用時指定 泛...

    linkin 評論0 收藏0
  • 聊聊Java泛型及實現(xiàn)

    摘要:靜態(tài)變量是被泛型類的所有實例所共享的。所以引用能完成泛型類型的檢查。對于這個類型系統(tǒng),有如下的一些規(guī)則相同類型參數(shù)的泛型類的關(guān)系取決于泛型類自身的繼承體系結(jié)構(gòu)。事實上,泛型類擴展都不合法。 前言 和C++以模板來實現(xiàn)靜多態(tài)不同,Java基于運行時支持選擇了泛型,兩者的實現(xiàn)原理大相庭徑。C++可以支持基本類型作為模板參數(shù),Java卻只能接受類作為泛型參數(shù);Java可以在泛型類的方法中取得...

    lewif 評論0 收藏0
  • 淺析Java泛型

    摘要:泛型類在類的申明時指定參數(shù),即構(gòu)成了泛型類。換句話說,泛型類可以看成普通類的工廠。的作用就是指明泛型的具體類型,而類型的變量,可以用來創(chuàng)建泛型類的對象。只有聲明了的方法才是泛型方法,泛型類中的使用了泛型的成員方法并不是泛型方法。 什么是泛型? 泛型是JDK 1.5的一項新特性,它的本質(zhì)是參數(shù)化類型(Parameterized Type)的應(yīng)用,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù),...

    godiscoder 評論0 收藏0
  • 初探Java類型擦除

    摘要:可以看到,如果我們給泛型類制定了上限,泛型擦除之后就會被替換成類型的上限。相應(yīng)的,泛型類中定義的方法的類型也是如此。參考語言類型擦除下界通配符和的區(qū)別 本篇博客主要介紹了Java類型擦除的定義,詳細的介紹了類型擦除在Java中所出現(xiàn)的場景。 1. 什么是類型擦除 為了讓你們快速的對類型擦除有一個印象,首先舉一個很簡單也很經(jīng)典的例子。 // 指定泛型為String List list1 ...

    DevTalking 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<