Java泛型-1(泛型的定義)

泛型學(xué)習(xí)目錄:

Java泛型-1(泛型的定義)
Java泛型-2(通配符)
Java泛型-3(實(shí)踐篇-protostuff序列化與反序列化)
Java泛型-4(類型擦除后如何獲取泛型參數(shù))

請注意:泛型里面不能使用基本數(shù)據(jù)類型。例如Box<int>
泛型官網(wǎng)地址

1.1 泛型的作用

  1. 為啥用:編譯期提供類型檢查以及消除類型轉(zhuǎn)換。

  2. 在哪用:泛型用在定義類、接口、方法處。

泛型的使用

1.2 泛型參數(shù)命名規(guī)則

泛型參數(shù)名稱是單個(gè)大寫字母。和您了解的變量命名規(guī)則不同。因?yàn)槿绻麤]有這種約定的話,就很難區(qū)分泛型參數(shù)普通類或接口的名稱

  • E-Element (Java Collection框架大量使用)
  • K-Key
  • N-Number
  • T-Type (對象類型)
  • V-Value
  • S,U,V等 ( 第二,第三,第四個(gè)類型)

1.3 泛型類的定義

class name<T1,T2,...,Tn>

類型參數(shù)部分被一對尖括號(<>)劃分,他指定了類型參數(shù)也叫類型變量,即T1,T2,...,Tn。

泛型類代碼實(shí)現(xiàn):

在類上聲明泛型,那么這個(gè)泛型類型可以在類中任意地方使用。

   //這個(gè)T的類型,可以在任何地方使用
    public class Box<T> {
        private T data;

        public T getData() {
            return data;
        }

        public void setData(T data) {
            this.data = data;
        }
    }

我們引入的類型變量T,可以在類中的任意地方使用。

類型變量可以指定為任意非原始類型的類型:任意的類,任意的接口,任意的數(shù)組甚至其他的類型變量。

當(dāng)然泛型接口也是這樣的原則。

泛型類可以有多個(gè)參數(shù)時(shí):

//泛型接口
public interface Pair<K, V> {
    public K getKey();
    public V getValue();
}

public class OrderPair<K, V> implements Pair<K, V> {
    private K key;
    private V value;
    public OrderPair(K key, V value) {
        this.key = key;
        this.value = value;
    }
    @Override
    public K getKey() {
        return key;
    }
    @Override
    public V getValue() {
        return value;
    }
}

1.4 調(diào)用和實(shí)例化泛型類型

要是在代碼中引用泛型類Box,必須執(zhí)行 泛型類型調(diào)用,把T替換成具體的值。

Box<Integer> box=new Box<Interger>();  //此時(shí)T的類型就是傳入的類型

泛型類型調(diào)用普通方法調(diào)用類似,但不是將參數(shù)傳遞給方法,而是將類型參數(shù)傳遞給Box類本身。


1.5 泛型方法

  • 泛型方法中泛型參數(shù)作用域:僅限于聲明它的方法。允許使用靜態(tài)或者非靜態(tài)的泛型方法,以及泛型構(gòu)造函數(shù)。

  • 泛型方法的語法:若方法返回類型泛型參數(shù),需要在方法返回值之前,聲明<泛型類型>的格式。

泛型聲明的反例:

泛型方法的反例

異常原因: Cannot resolve symbol 'T'【無法解析符號T】

泛型聲明的正例:

泛型聲明的正確姿勢.png

方法返回值前的<T>就是為了告訴編譯器,當(dāng)前的方法的泛型類型可以和的泛型類型不一致。

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

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

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