天天看點

2 分鐘快速搞懂,Java 泛型中的通配符 T,E,K,V

作者:java核心技術大全
2 分鐘快速搞懂,Java 泛型中的通配符 T,E,K,V

通配符 T,E,K,V

Java 泛型中的通配符 T , E , K , V , ? 是什麼?經常有同學會分不清楚。

本文我們一起來了解下。

送:《泛型最全知識導圖》、《大廠泛型面試真題26道》,到本篇結尾處獲得~

1 什麼是泛型

  • 泛型是 JDK5 的一個新特性,是把類型明确的工作,推遲到建立對象、或調用方法時才去明确的特殊的類型;
  • 泛型的本質是參數化類型,提供了編譯時類型安全監測機制,該機制允許我們在編譯時檢查類型安全,且所有的強制轉換都是自動和隐式的,隻要編譯時不出現問題,運作時就不會出現ClassCastException(類型轉換異常),可以極大地提高代碼的可讀性、複用性及安全性;
  • 泛型可以用在類、接口和方法的建立中,被稱為泛型類、泛型接口、泛型方法。

關于泛型的介紹,點選藍字回顧:Java泛型基礎最全詳解,超級詳細 ,這裡就不再贅述了。

2 T , E , K , V , ?是什麼

我們在定義泛型類,泛型方法,泛型接口的時候,經常會看見很多不同的通配符,比較常見的有: T,E,K,V , ? 。

實際上,這些通配符之間沒有差別,隻是一個約定俗成的字母辨別,我們可以使用任意字母(大寫)來定義.

例如:

将 T 換成 C

将 E 換成 D

将C換成 A , B , D,E,F,G,H

......等

這不會影響程式運作,隻是可讀性差一些而已。

通常情況下, T,E,K,V , ? 的類型表示如下:

2 分鐘快速搞懂,Java 泛型中的通配符 T,E,K,V

代碼示例:

public class NiuA<T> {
     public List<T> list = new ArrayList<T>();

      public static void main(String[] args) {
      NiuA<String> na = new NiuA<String>();
      na.list.add("hello");
      System.out.println(na.list);
    }
  }
 public class NiuB<N> {
      public List<N> list = new ArrayList<N>();
 |
       public static void main(String[] args) {
       NiuB<String> nb = new NiuB<String>();
       nb.list.add("hello");
       System.out.println(nb.list);
     }
 }
           

将 T 換成了N,在執行效果上沒有任何差別。

總結

以上,是 對Java 泛型中的通配符 T,E,K,V,?的詳解。建議大家按照約定俗成的規範編碼,以增加代碼的可讀性。

我是大全哥,持續更新成體系的 Java 核心技術。知識成體系,學習才高效。

如果覺得有幫助,請順手 點贊 支援下,謝謝。

我們下期見~

附泛型學習資料:

1 《泛型知識全景導圖》

快速建構泛型知識體系,高清版本原圖,幾乎囊括了所有泛型核心知識點。

2 分鐘快速搞懂,Java 泛型中的通配符 T,E,K,V

泛型知識全景導圖

2 《大廠泛型面試真題26道》

精選大廠高頻泛型面試題,都是我最新整理的,備面、複習時都可以檢視。

2 分鐘快速搞懂,Java 泛型中的通配符 T,E,K,V

大廠泛型面試題26道

2 分鐘快速搞懂,Java 泛型中的通配符 T,E,K,V

--- end ---