泛型:參數(shù)化數(shù)據(jù)類型枷畏;類,方法 虱饿,構(gòu)造器拥诡,接口
好處:編譯器 進(jìn)行類型檢查;
泛型類:類名 <類型參數(shù)>
類型參數(shù):
??? 可以是一個(gè) 也可以是多個(gè)氮发,用逗號(hào)分隔用一個(gè)大寫字母表示
??? T - type??? E - element??? K - key??? V -value
-------------------------------------------------------------------------------
原生類型:
??? 類型后沒有 指定具體的類型參數(shù)渴肉,這樣的類型 叫 原生類型。
----------------------------------------------------------------------------------------
泛型的通配符:
??????????? ? ????????? 無界通配符:可以匹配任意的引用類型
爽冕? extends? 上限類型 上限 :可以匹配上限類型 和上限類型的子類型
仇祭?? super??? 下限類型 下限 : 可以匹配 下限類 和 下限類的父類
--------------------------------------------------------------------------------------------
類型參數(shù) :可以指定 上限(上界)
注意:
??? 1.只能指定 上限
??? 2.還可以指定 多個(gè) 上限;
??? 3.上限可以是 類 也可以是接口
??? 4.上限 有類 和 接口扇售,那么 要 先 繼承類 后 實(shí)現(xiàn)接口前塔,類在前 接口在后。
---------------------------------------------------------------------------------------------------------
類型參數(shù) 和 通配符區(qū)別:
1.類型參數(shù) 只能指定上限承冰; 通配符 可以指定 上限 和下限;
2.類型參數(shù) 可以指定 多個(gè)上限食零; 通配符 只能指定一個(gè)上限困乒;
3.類型參數(shù) 可以作為一種 類型; 通配符不能表示為 一種類型贰谣。
----------------------------------------------------------------------------------------------------------
問題:String -> Object的子類娜搂,那么迁霎,Point<String>是否 是 Point<Object>的子類型呢?
不是百宇,參數(shù)化類型不能繼承考廉。
-------------------------------------------------------------------------------------------------------------
問題: Point<String>和Point<Integer>是幾個(gè)泛型類?携御?昌粤??
一個(gè)啄刹。
-------------------------------------------------------------------------------------------------------
類型擦除:
1.參數(shù)化類型 擦除后 為 原生類型: Point<Integer> -> Point
2.類型參數(shù):使用上界替換
? ?? 1)無界類型參數(shù): Poiint<T> -> Object 用Object替換
???? 2)指定了一個(gè)上限的 涮坐,用此上限類型來替換: Point<T extends Base> -> Base
?? ? 3)制定了 多個(gè) 上限的 ,用第一個(gè)上限替換: Point<T extends IA & IB> -> IA
-----------------------------------------------------------------------------------------------------------
重寫:
? 父類 參數(shù) 擦除后 與 子類相同
? 異常范圍 不能 比父類 更大誓军。
-----------------------------------------------------------------------------------------------
排序:
自然排序:
? ? 按照 Comparable接口 的 方法 compareTo()的規(guī)則排序袱讹。
問題:
外部比較器。
Comparator 函數(shù)式接口
--------------------------------------------------
Comparable? 和 Comparator區(qū)別:
1.Comparable是默認(rèn)的自然排序的方式:
? Comparator是我們 自己指定的一種排序方式昵时。
2.Comparable的比較 代碼 寫在 要比較的對(duì)象的類型的內(nèi)部的捷雕;
? Comparator 的比較代碼 寫在 要比較的對(duì)象的類型的外部的;
3.Comparable 只能指定一種 默認(rèn)排序方式壹甥;
? Comparator 可以自定義 多種 排序方式救巷。
--------------------------------------------------
枚舉類型:
? 1.底層 就是class類;
? 2.已經(jīng)繼承了一個(gè)類? Enum,不能再繼承其它的類了盹廷;
? 3.對(duì)于一個(gè) 非 抽象的枚舉類型 默認(rèn)是final;
? 4.構(gòu)造器 是 private的征绸;
? 5.在枚舉類型 的第一行代碼處 列舉出 所有的 枚舉對(duì)象(實(shí)例);
? 6.所有的枚舉 對(duì)象 都是 public static final的俄占。
? 7.當(dāng)枚舉類中定義了抽象方法管怠,那么每個(gè)對(duì)象的匿名內(nèi)部類方式
???? 都必須實(shí)現(xiàn) 這個(gè) 抽象方法,并且這個(gè)枚舉類為? abstract的缸榄。
----------------------------------------------------------------------------------------------------------------------------------------------