Java核心技術-01-談談泛型

泛型在實際開發和麪試中都非常重要,所以我們今天來談談這個話題

1,什麼是泛型

泛型的本質是爲了參數化類型,通過泛型指定的不同類型來控制形參具體限制的類型。

舉個例子!

我們要定義一個只能存放整數的集合,怎麼寫?

List list = new ArrayList();

這樣對嗎?其實不行,這樣我們可以往list添加任務數據類型

所以這個時候,解決辦法就是採用泛型,可以這麼來寫

List<Integer> list = new ArrayList<>();

通過參數化類型,就可以限制list可以添加的類型

2,泛型的特點,只對編譯期間有效,在運行期間無效(泛型的擦除)

我們來看看,以下這兩個集合是同個類型嗎?

List list1 = new ArrayList<>();

List list2 = new ArrayList<>();

很明顯,在編譯期間,兩個集合都很好控制了添加的數據類型。

但是,在運行期間,這個類型會被擦除。我們來做個試驗就得到這個結論

public static void main(String[] args) {

    Listlist1 = new ArrayList<>();

    List list2 = new ArrayList<>();

    System.out.println(list1.getClass() == list2.getClass());

}

可以試試結果,我打包票,出來的結果是true

3,注意點

泛型的參數類型只能是引用類型,不能是基本數據類型,比如int

4,泛型的使用

4.1 泛型類

public class GenericTest {

    public static void main(String[] args) {

        GenericClassg1 = new GenericClass<();

        g1.setKey(1);

        System.out.println(g1.getKey());

    }

}

class GenericClass{

    private T key;

    public void setKey(T key){

        this.key = key;

    }

    public T getKey(){

        return this.key;

    }

}

4.2 泛型接口

interface GenericInterface{

    public T getNext();

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章