具有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 需求 定義學生類,其中有學生成績 整...