泛型:參數(shù)化數(shù)據(jù)類型;類,方法 ,構(gòu)造器,接口
好處:編譯器 進行類型檢查;
泛型類:類名 <類型參數(shù)>
類型參數(shù):
??? 可以是一個 也可以是多個,用逗號分隔用一個大寫字母表示
??? T - type??? E - element??? K - key??? V -value
-------------------------------------------------------------------------------
原生類型:
??? 類型后沒有 指定具體的類型參數(shù),這樣的類型 叫 原生類型。
----------------------------------------------------------------------------------------
泛型的通配符:
??????????? ? ????????? 無界通配符:可以匹配任意的引用類型
? extends? 上限類型 上限 :可以匹配上限類型 和上限類型的子類型
?? super??? 下限類型 下限 : 可以匹配 下限類 和 下限類的父類
--------------------------------------------------------------------------------------------
類型參數(shù) :可以指定 上限(上界)
注意:
??? 1.只能指定 上限
??? 2.還可以指定 多個 上限;
??? 3.上限可以是 類 也可以是接口
??? 4.上限 有類 和 接口,那么 要 先 繼承類 后 實現(xiàn)接口,類在前 接口在后。
---------------------------------------------------------------------------------------------------------
類型參數(shù) 和 通配符區(qū)別:
1.類型參數(shù) 只能指定上限; 通配符 可以指定 上限 和下限;
2.類型參數(shù) 可以指定 多個上限; 通配符 只能指定一個上限;
3.類型參數(shù) 可以作為一種 類型; 通配符不能表示為 一種類型。
----------------------------------------------------------------------------------------------------------
問題:String -> Object的子類,那么,Point<String>是否 是 Point<Object>的子類型呢?
不是,參數(shù)化類型不能繼承。
-------------------------------------------------------------------------------------------------------------
問題: Point<String>和Point<Integer>是幾個泛型類????
一個。
-------------------------------------------------------------------------------------------------------
類型擦除:
1.參數(shù)化類型 擦除后 為 原生類型: Point<Integer> -> Point
2.類型參數(shù):使用上界替換
? ?? 1)無界類型參數(shù): Poiint<T> -> Object 用Object替換
???? 2)指定了一個上限的 ,用此上限類型來替換: Point<T extends Base> -> Base
?? ? 3)制定了 多個 上限的 ,用第一個上限替換: Point<T extends IA & IB> -> IA
-----------------------------------------------------------------------------------------------------------
重寫:
? 父類 參數(shù) 擦除后 與 子類相同
? 異常范圍 不能 比父類 更大。
-----------------------------------------------------------------------------------------------
排序:
自然排序:
? ? 按照 Comparable接口 的 方法 compareTo()的規(guī)則排序。
問題:
外部比較器。
Comparator 函數(shù)式接口
--------------------------------------------------
Comparable? 和 Comparator區(qū)別:
1.Comparable是默認的自然排序的方式:
? Comparator是我們 自己指定的一種排序方式。
2.Comparable的比較 代碼 寫在 要比較的對象的類型的內(nèi)部的;
? Comparator 的比較代碼 寫在 要比較的對象的類型的外部的;
3.Comparable 只能指定一種 默認排序方式;
? Comparator 可以自定義 多種 排序方式。
--------------------------------------------------
枚舉類型:
? 1.底層 就是class類;
? 2.已經(jīng)繼承了一個類? Enum,不能再繼承其它的類了;
? 3.對于一個 非 抽象的枚舉類型 默認是final;
? 4.構(gòu)造器 是 private的;
? 5.在枚舉類型 的第一行代碼處 列舉出 所有的 枚舉對象(實例);
? 6.所有的枚舉 對象 都是 public static final的。
? 7.當(dāng)枚舉類中定義了抽象方法,那么每個對象的匿名內(nèi)部類方式
???? 都必須實現(xiàn) 這個 抽象方法,并且這個枚舉類為? abstract的。
----------------------------------------------------------------------------------------------------------------------------------------------