泛型類,是在例項化類的時候指明泛型的具體型別;泛型方法,是在呼叫方法的時候指明泛型的具體型別。
/**
* 泛型方法的基本介紹
* @param tclass 傳入的泛型實參
* @return t 返回值為t型別
* 說明:
* 1)public 與 返回值中間非常重要,可以理解為宣告此方法為泛型方法。
* 2)只有宣告了的方法才是泛型方法,泛型類中的使用了泛型的成員方法並不是泛型方法。
* 3)表明該方法將使用泛型型別t,此時才可以在方法中使用泛型型別t。
* 4)與泛型類的定義一樣,此處t可以隨便寫為任意標識,常見的如t、e、k、v等形式的引數常用於表示泛型。
*/public t genericmethod(classtclass)throws instantiationexception ,
illegalacces***ception
注意第二點,只有宣告了的方法才是泛型方法,泛型類中的使用了泛型的成員方法並不是泛型方法。
當然第一點也是基礎而重要的,public 與 返回值中間非常重要,可以理解為宣告此方法為泛型方法。
也就是說該方法的返回值型別是後面的t型別,前面的只是將該方法宣告為泛型方法,而不是指定該方法的返回值型別。
基於上面所說。
public void showkeyvalue1(genericobj)
//這也不是乙個泛型方法,這也是乙個普通的方法,只不過使用了泛型萬用字元?
//同時這也印證了泛型萬用字元章節所描述的,?是一種型別實參,可以看做為number等所有類的父類
public void showkeyvalue2(generic<?> obj)
/*** 這個方法是有問題的,編譯器會為我們提示錯誤資訊:"unknown class 'e' "
* 雖然我們宣告了,也表明了這是乙個可以處理泛型的型別的泛型方法。
* 但是只宣告了泛型型別t,並未宣告泛型型別e,因此編譯器並不知道該如何處理e這個型別。
public t showkeyname(genericcontainer)
*/
上面三個方法均不是泛型方法。
/**
* 這才是乙個真正的泛型方法
* 首先在public與返回值之間的必不可少,這表明這是乙個泛型方法,並且宣告了乙個泛型t
* 這個t可以出現在這個泛型方法的任意位置.
* 泛型的數量也可以為任意多個
* 如:public k showkeyname(genericcontainer)
*/public t showkeyname(genericcontainer)
這才是乙個真正的泛型方法。
具體參考:
科目三筆記
1 起步 1左燈,喇叭3秒 2鬆手剎 3腳踩離合器和腳剎,掛一檔 先手剎,後檔位 4起步 問題 在轉彎時,加油掛2擋以及 3擋 還是轉彎過後直行,加油掛擋呢?2 左轉 右 速度在20碼上 3 加減檔 3 2 3 4 3 問題 1掛4檔後,加油到 38碼?2什麼時候從4擋掛到 3擋,檔位切換要等多久?...
Boolan STL與泛型程式設計 第四周筆記
stl六大部件從語言層面講 algorithms看不見containers,對其一無所知 所以它需要的一切資訊都必須從iterators取得,而iterators 由containers 必須能夠回答algorithm的所有提問,才能搭配該algorithm的所有操作。一般stl中的演算法都是以下兩...
Boolan STL與泛型程式設計 第一周筆記
泛型程式設計 一 我們的目標 level 0 使用c 標準庫 level1 認識c 標準庫 胸中自由丘壑 level2 良好使用c 標準庫 level3 擴充c 標準庫 c standard library vs.standard template library stl 前者包含後者 c 標準庫的...