Java中的泛型

一、概念
泛型,即“參數(shù)化類型”。一提到參數(shù),最熟悉的就是定義方法時有形參,然后調(diào)用此方法時傳遞實參。那么參數(shù)化類型怎么理解呢?
顧名思義,就是將類型由原來的具體的類型參數(shù)化,類似于方法中的變量參數(shù),此時類型也定義成參數(shù)形式(可以稱之為類型形參),
然后在使用/調(diào)用時傳入具體的類型(類型實參)。
泛型的本質(zhì)是為了參數(shù)化類型(在不創(chuàng)建新的類型的情況下,通過泛型指定的不同類型來控制形參具體限制的類型)。也就是說在泛型使用過程中,操作的數(shù)據(jù)類型被指定為一個參數(shù),這種參數(shù)類型可以用在類、接口和方法中,分別被稱為泛型類、泛型接口、泛型方法。

二、泛型類
泛型類型用于類的定義中,被稱為泛型類。通過泛型可以完成對一組類的操作對外開放相同的接口。最典型的就是各種容器類,如:List、Set、Map。


// 1.定義一個泛型類,當實例化這個類的時候,必須傳入相應(yīng)的類型參數(shù),在類中有一個方法會消費傳入的類型參數(shù),調(diào)用該方法就可以得到與傳入?yún)?shù)相關(guān)的數(shù)據(jù)。

/**
* 泛型類
* 定義一個泛型類,當實例化這個類的時候,必須傳入相應(yīng)的類型參數(shù),在類中有一個方法會消費傳入的類型參數(shù),調(diào)用該方法就可以得到與傳入?yún)?shù)相關(guān)的數(shù)據(jù)。
*/
public class GenericsClass<T> {


   public T city;


   GenericsClass(T t) {
       this.city = t;
   }


   /**
    * 獲取城市信息
    * @return
    */
   public String getCityInfo() {
       return "cityInfo:" + city.toString();
   }


}


// 2.測試類,根據(jù)不同的對象,實例化不同的泛型類,調(diào)用類中的方法,獲取相對應(yīng)傳入的類型參數(shù)的信息

/**
* 測試GenericsClass
*/
class GenericsClassTest {


   /**
    *
    */
   @Test
   void getCityInfo() {
       Beijing beijing = new Beijing();
       GenericsClass b = new GenericsClass(beijing);
       System.out.println(b.getCityInfo());
       System.out.println("/---------------------------------/");


       Tianjin tianjin=new Tianjin();
       GenericsClass t = new GenericsClass(tianjin);
       System.out.println(t.getCityInfo());




   }
}

// 3.測試用到的類型參數(shù)對象

@Data
@Accessors(chain = true)
public class Beijing {


   private  String name="北京";


   private String area = "北方";


   private Integer age = 500;


}


@Data
public class Tianjin {
   private  String name="天津";


   private String area = "東方";


   private Integer age = 300;
}


// 4.控制臺輸出

cityInfo:Beijing(name=北京, area=北方, age=500)
/---------------------------------/
cityInfo:Tianjin(name=天津, area=東方, age=300)

引用:

https://www.cnblogs.com/coprince/p/8603492.html

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

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

  • 本系列文章將整理到我在GitHub上的《Java面試指南》倉庫,更多精彩內(nèi)容請到我的倉庫里查看 https://g...
    程序員黃小斜閱讀 684評論 0 0
  • Java語言高級特性前言: java知識是作為Android開發(fā)的語言基礎(chǔ),雖然現(xiàn)在我們已經(jīng)推出了kotlin,但...
    CaoMeng閱讀 345評論 0 0
  • Java中的泛型存在一些編譯器特性, 是在編譯期間就將泛型代碼轉(zhuǎn)換成具體的類型. 泛型的概念 泛型,即“參數(shù)化類型...
    sixleaves閱讀 848評論 0 0
  • 引言:泛型一直是困擾自己的一個難題,但是泛型有時一個面試時老生常談的問題;今天作者就通過查閱相關(guān)資料簡單談?wù)勛约簩?..
    cp_insist閱讀 1,929評論 0 4
  • 前世 我在佛前的梵音里 祈禱了千年 眉間的朱砂 點染著亙古的柔情 那一輪明月 早已被詩詞醉了又醉 卻怎奈我蒼白的廝...
    一泓夜雨閱讀 430評論 8 8

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