大三筆記(泛型小記)

2021-08-28 05:46:26 字數 1428 閱讀 3549

泛型類,是在例項化類的時候指明泛型的具體型別;泛型方法,是在呼叫方法的時候指明泛型的具體型別

/**

* 泛型方法的基本介紹

* @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 標準庫的...