W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
筆者能力有限,總結有誤的地方,請讀者協(xié)作更正。
1.Java中的泛型是什么?使用泛型的好處?
在集合中存儲對象,并在使用前進行類型轉換很不方便;java1.5開始提供了泛型。 作用:在編譯期進行類型轉換,把正確的類型對象放在入集合中,避免出現(xiàn)類型轉換異常。
2.泛型是如何工作的?什么是類型擦除?
泛型是通過類型擦除來實現(xiàn)的,編譯器在編譯的時候會擦除所有類型的相關信息,所有在運行的時候不存在任何類型轉換。例如:定義兩個數(shù)組,Arraylist<String>,ArrayList<Integer>,我們用getClass()獲取類的信息,返回結果都為true,說明類型在編譯的時候被擦除。
為什么泛型用類型擦除來實現(xiàn)? 因為泛型能保證,我們只需要定義一次類,就可以被任何數(shù)據(jù)類型使用,而不是一種數(shù)據(jù)類型定義一個類; 泛型只能保存我們使用的數(shù)據(jù)類型,而不是一堆的Object;
3.什么是泛型中的限定通配符?和非限定通配符?
限定通配符對類進行限制:
4.如何編寫一個泛型方法,讓它能接受泛型參數(shù)并返回泛型類型?
使用T, E or K,V等被廣泛認可的類型占位符;最簡單的情況下,一個泛型方法可能會像這樣:
5.你可以把List<String>傳遞給一個接受List<Object>參數(shù)的方法嗎?
String是一種Object,看起來可以傳遞,實際不可以;因為List<String>是自定義泛型的,只能用來存儲String; List<Object>可以用來存儲所有數(shù)據(jù)類型。
6.Array可以用泛型么?
Array事實上并不支持泛型; Java一書中建議使用List來代替Array,因為List可以提供編譯期的類型安全保證,而Array卻不能。
7.如何阻止java中的“類型檢查”錯誤?
原因:把泛型和原始數(shù)據(jù)類型混合使用,編譯時會出現(xiàn)該錯誤。例如: List<String> rawList = new ArrayList()
8.是否可以使用Object代替通配符“?”使用?
List<?>?是一個未知類型的List,而List<Object> 其實是任意類型的List。 可以把List<String>, List<Integer>賦值給List<?>, 卻不能把List<String>賦值給 List<Object>。? ? ?
9.Java中List<Object>和原始類型的List的區(qū)別?
在編譯時編譯器不會對原始類型進行類型安全檢查,卻會對帶參數(shù)的類型進行檢查,通過使用Object作為類型,可以告知編譯器該方法可以接受任何類型的對象,比如String或Integer。
原始類型List可以存任何數(shù)據(jù)類型,但卻不能把List<String>傳遞給接受 List<Object>的方法,即指定泛型的List不能傳給Object; 因為會產生編譯錯誤。
10.List<String>和原始類型List之間的區(qū)別?
帶參數(shù)類型是類型安全的,由編譯器保證的,但原始類型List卻不是類型安全 的。 原始類型List可以存任何數(shù)據(jù)類型,List<String>只能存String類型
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: