javaSE_day13_泛型

泛型:參數(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的。

----------------------------------------------------------------------------------------------------------------------------------------------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容