【006期】JavaSE面試題(六):泛型
開篇介紹
大家好,我是Java最全面試題庫
的提褲姐
,今天這篇是面試系列的第六篇,主要總結了JavaSE中泛型相關面試題,在後續,會沿著第一篇開篇的知識線路一直總結下去,做到日更!如果我能做到百日百更
,希望你也可以跟著百日百刷
,一百天養成一個好習慣。
一、什麼是泛型?
Java泛型( generics)是JDK 5中引⼊的⼀個新特性, 允許在定義類和介面的時候使⽤型別引數( type parameter) 。
宣告的型別引數在使⽤時⽤具體的型別來替換。泛型最主要的應⽤是在JDK 5中的新集合類框架中。
泛型最⼤的好處是可以提⾼程式碼的復⽤性。以List介面為例,我們可以將String、 Integer等型別放⼊List中, 如不⽤泛型, 存放String型別要寫⼀個List介面, 存放Integer要寫另外⼀個List介面, 泛型可以很好的解決這個問題。
二、什麼是型別擦除?
過型別引數合併,將泛型型別例項關聯到同一份位元組碼上。
編譯器只為泛型型別生成一份位元組碼,並將其例項關聯到這份位元組碼上。
泛型是透過型別擦除來實現的,編譯器在編譯時擦除了所有型別相關的資訊,所以在執行時不存在任何型別相關的資訊。例如 List在執行時僅用一個List來表示。這樣做的目的,是確保能和Java 5之前的版本開發二進位制類庫進行相容。你無法在執行時訪問到型別引數,因為編譯器已經把泛型型別轉換成了原始型別。
型別擦除的主要過程如下:
1.將所有的泛型引數用其最左邊界(最頂級的父型別)型別替換。
2.移除所有的型別引數。
三、List<?> 和List的區別?
List 是一個未知型別的List,而List 其實是任意型別的List。
可以把List, List賦值給List,卻不能把List賦值給 List。
四、什麼是泛型中的限定萬用字元和非限定萬用字元 ?
限定萬用字元
:
對型別進行了限制。有兩種限定萬用字元:
- 一種是它透過確保型別必須是T的子類來設定型別的上界,
- 另一種是它透過確保型別必須是T的父類來設定型別的下界。
泛型型別必須用限定內的型別來進行初始化,否則會導致編譯錯誤。
非限定萬用字元
:
表示了非限定萬用字元,因為可以用任意型別來替代。
五、泛型中K T V E ?object等的含義 ?
E - Element (在集合中使用,因為集合中存放的是元素)
T - Type(Java 類)
K - Key(鍵)
V - Value(值)
N - Number(數值型別)
?- 表示不確定的java型別(無限制萬用字元型別)
Object - 是所有類的根類,任何類的物件都可以設定給該Object引用變數,使用的時候可能需要型別強制轉換,但是用使用了泛型T、E等這些識別符號後,在實際用之前型別就已經確定了,不需要再進行型別強制轉換。
六、編寫一個泛型方法,讓它能接受泛型引數並返回泛型型別 ?
public V put(K key, V value) {
return cache.put(key, value);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2480/viewspace-2825756/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaSE基礎:泛型Java泛型
- JAVASE之JAVA泛型篇Java泛型
- JavaSE面試題:反射Java面試題反射
- 【Java面試題】之泛型相關Java面試題泛型
- Golang面試:泛型Golang面試泛型
- 面試中Java泛型問題一文搞定面試Java泛型
- JavaSE-Java基礎面試題Java面試題
- 投稿006期 |我面試過的那些爛技術大哥面試
- Java演算法面試題(006) 相遇問題(阿里)Java演算法面試題阿里
- Java泛型型別擦除問題Java泛型型別
- 提給程式設計師的10道Java泛型面試題程式設計師Java泛型面試題
- Java泛型知識點:泛型類、泛型介面和泛型方法Java泛型
- 楊老師課堂之JavaSe部分面試題Java面試題
- 泛型類、泛型方法及泛型應用泛型
- TypeScript 官方手冊翻譯計劃【六】:型別操控-泛型TypeScript型別泛型
- 泛型類和泛型方法泛型
- 【java】【泛型】泛型geneticJava泛型
- java泛型之泛型方法。Java泛型
- 泛型--泛型萬用字元和泛型的上下限泛型字元
- 面試官:說說什麼是泛型的型別擦除?面試泛型型別
- JavaSE基礎知識分享(六)Java
- TypeScript 泛型介面和泛型類TypeScript泛型
- Go 泛型之泛型約束Go泛型
- java泛型之泛型陣列。Java泛型陣列
- Java面試題-javaweb篇六Java面試題Web
- iOS面試題總結(六)iOS面試題
- 泛型泛型
- 面試官:十問泛型,你能扛住嗎?面試泛型
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- 面試題系列:用了這麼多年的 Java 泛型,我竟然只知道它的皮毛面試題Java泛型
- 集合框架-通過Object轉型問題引入泛型框架Object泛型
- java泛型應該注意的問題。Java泛型
- 第 80 期帶你提前玩 Go 2 新特性:泛型Go泛型
- 面試準備題型面試
- 型別 VS 泛型型別泛型
- TypeScript 泛型型別TypeScript泛型型別
- 泛型(一)泛型
- 泛型(三)泛型