android 集成同一interface不同泛型_【Java视频教程】day30-泛型??
泛型
泛型的引入
需求:打印集合中所有字符串的長度;結論:
再使用集合時,因為集合中可以保存不同類型的數據,保存進入集合后不管什么類型的數據都會自動向上轉型為Object類型,
所以實際使用時一般需要強制向下轉型為原來的類型;一旦使用強制向下轉型,就有可能會出現類型轉換異常;
解決辦法:
靠程序員自覺是不行的,最好能有一種技術手段,強制要求一個容器只能保存一種類型的數據;
Java中從JDK5開始提供了這種手段,就是泛型技術;泛型介紹
泛型,又叫做參數化類型(就是類型的變量),可以在編譯期對數據類型(只能是引用數據類型)進行限制;
泛型的寫法:
<類型的變量名>
泛型使用演示:
我們來使用泛型解決上面的問題:
使用List集合時給泛型傳參的圖解:
泛型技術,只是在編譯期有效,編譯后class中就沒有泛型;編譯后泛型消失,又叫做泛型的擦除;
泛型只是一種在編譯期對數據類型進行檢查的技術,不僅僅用在集合技術中;
使用泛型,可以在編譯期就對數據的類型進行強制檢查,避免運行期出現類型轉換異常,提高程序的健壯性。
https://www.zhihu.com/video/1069348635325665280泛型的簡單應用
需求:向集合中添加學生對象,要求按照學生的年齡進行從小到大排序
public https://www.zhihu.com/video/1069348709585883136自定義泛型
根據泛型書寫的位置,可以分為三種:
類的泛型,接口的泛型,和方法的泛型;
- 泛型類
格式:
class需求:定義一個工具類,可以保存和獲取一個任意類型的對象;
問題:
類上的泛型是一個變量,那么這個變量是什么時候賦值的呢?
類上的泛型就是這個類的非靜態成員變量,所以是在創建這個類的對象的時候給泛型變量賦值;
使用泛型類需要注意:
泛型接口
類上可以定義泛型,接口上也可以定義泛型;
格式:
interface如果在定義一個接口時在接口上使用泛型,這個接口就成為泛型接口;
1、接口的泛型,在實現接口時可以確定;
此時,這個類并不是泛型類,而且這個接口中所有使用泛型的方法都不在使用泛型,參數的類型將直接固定下來,不在變化;
類似這樣,泛型通過接口實現或者說類的繼承的方式,從接口轉移到類上(或者父類轉移到子類上),叫做泛型的傳遞;
https://www.zhihu.com/video/1069349108199915520泛型方法
除了類和接口上可以定義泛型,方法上也可以定義泛型;
書寫格式是:在函數的返回值類型前面加上泛型,如:
public定義在方法上的泛型,相當于這個方法中的一個局部變量,不能這個函數之外的地方使用;
注意:泛型就是類型的變量,定義在方法中的泛型就是定義在方法里的變量,是一個局部變量,所以其它函數中不能使用;
如果方法要接受的參數不確定,而且和類上的泛型不一致,就可以在方法上自己定義泛型;
練習:提供一個功能,向List集合中添加某種類型數據;https://www.zhihu.com/video/1069349291189043200泛型通配符
泛型中的通配符
練習:說出下面代碼中泛型的實際類型;
public如果不知道具體的類型是什么,就要使用泛型的通配符表示,表示可以匹配不同的類型:
泛型的通配符,使用一個問號表示,格式是:
<?>需求:定義功能,可以輸出保存不同類型數據的List集合中的元素,
問題:
Java的泛型中,T和?有什么區別?
T表示是一個變量,不是一個具體的類型;
?表示通配符,可以匹配不同的類型,不是固定的一種類型;是一種值;
https://www.zhihu.com/video/1069349573805395968泛型的上限和下限
如果具體類型不確定,但是只能是某種類型或它的子類,就可以使用泛型的上限,格式是:
<?如果具體類型不確定,但是只能是某種類型或它的父類,就可以使用泛型的下限,格式是:
<?注意:
集合中使用泛型的上限時,能夠從集合中取數據,保存到上限類型或者Object類型;但是不能向集合中添加數據,因為不確定運行時傳遞過來的集合實際保存的數據的類型;
集合中使用泛型的下限時,可以向集合中添加下限類型或者下限類型的子類型的數據,但是不能從集合中取數據放到下限類型,因為很有可能集合中保存的是下限類型的父類型;
https://www.zhihu.com/video/1069350681604927488泛型總結
通配符的寫法:<?>
總結
以上是生活随笔為你收集整理的android 集成同一interface不同泛型_【Java视频教程】day30-泛型??的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: glibc升级_CentOS7下升级GL
- 下一篇: 怎么查看蓝牙uuid_多设备低功耗蓝牙