第15章 泛型

2021-10-08 14:40:11 字數 1079 閱讀 6013

具有private構造器的類在該類外部不能new物件,也不能在外部被繼承。

內部類中使用"外部類類名.this"表示外部類的this。

對於乙個static方法而言,無法訪問泛型類的型別引數:

class

genericsetter

}

如果static方法想要使用泛型能力,就必須使之成為泛型方法。定義泛型方法只需將泛型引數列表置於返回值之前:

class

genericsetter

}

只有當你希望使用的型別引數比某個具體型別(以及它的所有子型別)更加泛化時——也就是說,當你希望**能夠跨多個類工作時,才有必要使用泛型,否則可以用多型代替。

泛型支援多重邊界:

< t extends 類名 & 介面名 & 介面名 >

類在前,介面在後,介面可有多個,類只能乙個。

將子類陣列向上轉型為父類陣列,並向陣列中新增父類物件,該行為在編譯期不會報錯,但執行時會觸發異常:

public

static

void

main

(string[

] args)

使用泛型容器來代替陣列,可以將這種錯誤檢測移入編譯期,因為泛型容器不支援這種向上轉型:

public

static

void

test01()

public

static

void

test01()

}

public

static

void

test01()

無界萬用字元<?>意味著任何事物,表示將持有某種具體型別的同構集合。它與不使用泛型時的情況不同,不使用泛型表示任何型別,而<?>表示型別是具體的,只是我現在還不知道它是什麼樣的型別。

不能使用基本型別作為型別引數,不能建立形如arraylist< int >之類的東西。

第16章 模板與泛型程式設計 15

16.6.2 類模板的特化 1.定義類特化 template class queue const string front const void push const char void pop bool empty const friend ostream operator ostream os,...

第9章 泛型

增加了泛型支援後的集合,完全可以記住集合中元素的型別,並可以在編譯時檢查集合中元素的型別,如果試圖向集合中新增不滿足型別要求的物件,編譯器就會提示錯誤。建立的方法是 在集合介面 類後增加尖括號,尖括號裡放乙個資料型別,如 liststr new arraylist 對於後面的 系統會自動識別為str...

第12章 泛型

泛型字母 形式型別引數 formal type parameters 即泛型字母 命名 泛型字母可以隨意指定,盡量使用單個的大寫字母 有時候多個泛型型別時會加上數字,比如t1,t2 常見字母 見名知意 t type k v key value e element 需求 定義學生類,其中有學生成績 整...