java泛型

一、概述

泛型在java中有很重要的地位,在面向對象編程及各種設計模式中有非常廣泛的應用

二、泛型的意義

泛型,即“參數化類型”。就是將類型由原來的具體的類型參數化,類似於方法中的變量參數,此時類型也定義成參數形式(可以稱之爲類型形參),然後在使用/調用時傳入具體的類型(類型實參)。

泛型存在的意義:

1,適用於多種數據類型執行相同的代碼(代碼複用)
2, 泛型中的類型在使用時指定,不需要強制類型轉換(類型安全,編譯器會檢查類型)

三、分類

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

四、使用

4.1 泛型類

泛型用於類的定義中,被稱爲泛型類。通過泛型類可以完成對不同類型的對象執行泛型類相同邏輯的處理。最典型的就是各種容器類,如:List、Set、Map。

package com.mzj.javabase.genericity.clazz;

public class Generic<T> {

    private T key;

    public Generic(T key) {
        this.key = key;
    }

    public T getKey(){
        return key;
    }

    public static void main(String[] args) {
        //傳入的實參類型需與泛型的類型參數類型相同
        Generic<Integer> genericInteger = new Generic<Integer>(123456);
        Generic<String> genericString = new Generic<String>("key_vlaue");
        //定義的泛型類,就一定要聲明泛型具體類型?
        // 並不是這樣,在使用泛型的時候如果聲明泛型具體類型,則會根據這個類型做相應的限制,此時泛型纔會起到本應起到的限制作用。
        // 如果不聲明泛型具體類型的話,在泛型類中使用泛型的方法或成員變量定義的類型可以爲任何的類型。
        Generic other = new Generic("123");
    }
}

定義的泛型類,就一定要聲明泛型具體類型?並不是這樣,在使用泛型的時候如果聲明泛型具體類型,則會根據這個類型做相應的限制,此時泛型纔會起到本應起到的限制作用。如果不聲明泛型具體類型的話,在泛型類中使用泛型的方法或成員變量定義的類型可以爲任何的類型。比如上面代碼最後一個new。

4.1.1 使用規則

  • 泛型的類型參數只能是類類型,不能使用基本類型。
  • 不能對確切的泛型類型使用instanceof操作。如下面的操作是非法的,編譯時會出錯,如下面代碼
if(ex_num instanceof Generic<Number>){   
} 
  • 泛型沒有多態
List<Fruit> list = new ArrayList<Apple>();//錯誤
  • 數組沒有泛型
Fruit<String>[] arr = new Fruit<String>(); //報錯

 

 

4.2 泛型接口

XXX

4.3 泛型方法

XXX

4.4 泛型通配符

XXX

4.5 泛型上下界

XXX

 

https://blog.csdn.net/s10461/article/details/53941091

 

 

 

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