您好,登錄后才能下訂單哦!
泛型泛型(generic)概述和基本使用
泛型把明確數據類型的操作放到創建對象或者調用方法的時候再明確。
JDK1.5之后的新特性。
格式:
<引用數據類型>
好處:
泛型保證集合中的數據類型一致,提高安全性。把運行期異常提前到編譯期。
那么在JDK1.5之前怎么實現參數的任意化呢?
是通過接收Object類型的參數實現的。因為任意類直接或間接繼承自Object。
但這樣實現的缺點就是,還是不能保證數據類型的安全一致。
Object obj1 = new Student();
Object obj2 = new Teacher();
上面兩個對象都聲明為Object類型,那獲取元素的時候到底該如何轉型呢?還是存在問題。
應用:
泛型類
泛型接口
泛型方法
2、ArrayList存儲字符串和自定義對象并遍歷泛型版
3、泛型的由來
補充:泛型擦除
查看下述兩個方法:
public void show(ArrayList<String> list) {}
public void show(ArrayList<Integer> list){}
/*
* 上述兩個方法是不會形成方法的重載的,會報方法已存在的錯誤。 原因:泛型擦除
* 泛型是1.5中引入的一個新的概念,由于不用進行強制轉換類型了,所以具有較高的安全性和易用性。
* 因為泛型其實只是在編譯器中實現的而虛擬機并不認識泛型
* ,所以要在虛擬機中將泛型類型進行擦除。也就是說,在編譯階段使用泛型,運行階段取消泛型,即擦除。
* 擦除是將泛型類型以其父類代替,如String變成了Object等。
* 其實在使用的時候還是進行帶強制類型的轉化,只不過這是比較安全的轉換,因為在編譯階段已經確保了數據的一致性。
*/
4、泛型類的概述及使用
明確數據類型的工作放到了創建對象的時候
5、泛型方法的概述和使用
明確數據類型的工作放到了調用方法的時候
方法泛型 <> 加在返回值前面。
6、泛型接口的概述和使用
一種是子類實現接口的時候明確數據類型
interface Fu<T>{}
class Zi implements Fu<String>{}
一種是子類繼續使用泛型:
class Zi<T> implements Fu<T>{}
7、泛型高級之通配符
<?> -- 泛型通配符
<? extends E> -- 向下限定,接收E及其子類類型
<? super E> -- 向上限定,接收E及其父類類型
原理:多態。 -- 父類引用指向子類對象。 Fu fu = new Zi();
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。