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