開篇介紹
你們好,我是Java最全面試題庫
的提褲姐
,今天這篇是面試系列的第六篇,主要總結了JavaSE中泛型相關面試題,在後續,會沿着第一篇開篇的知識線路一直總結下去,作到日更!若是我能作到百日百更
,但願你也能夠跟着百日百刷
,一百天養成一個好習慣。html
1、什麼是泛型?
Java泛型( generics)是JDK 5中引⼊的⼀個新特性, 容許在定義類和接口的時候使⽤類型參數( type parameter) 。 聲明的類型參數在使⽤時⽤具體的類型來替換。泛型最主要的應⽤是在JDK 5中的新集合類框架中。java
泛型最⼤的好處是能夠提⾼代碼的復⽤性。以List接口爲例,咱們能夠將String、 Integer等類型放⼊List中, 如不⽤泛型, 存放String類型要寫⼀個List接口, 存放Integer要寫另外⼀個List接口, 泛型能夠很好的解決這個問題。git
2、什麼是類型擦除?
過類型參數合併,將泛型類型實例關聯到同一份字節碼上。 編譯器只爲泛型類型生成一份字節碼,並將其實例關聯到這份字節碼上。 泛型是經過類型擦除來實現的,編譯器在編譯時擦除了全部類型相關的信息,因此在運行時不存在任何類型相關的信息。例如 List在運行時僅用一個List來表示。這樣作的目的,是確保能和Java 5以前的版本開發二進制類庫進行兼容。你沒法在運行時訪問到類型參數,由於編譯器已經把泛型類型轉換成了原始類型。github
類型擦除的主要過程以下: 1.將全部的泛型參數用其最左邊界(最頂級的父類型)類型替換。 2.移除全部的類型參數。面試
3、List<?> 和List的區別?
List 是一個未知類型的List,而List 實際上是任意類型的List。 能夠把List, List賦值給List,卻不能把List賦值給 List。框架
4、什麼是泛型中的限定通配符和非限定通配符 ?
限定通配符
: 對類型進行了限制。有兩種限定通配符:post
- 一種是它經過確保類型必須是T的子類來設定類型的上界,
- 另外一種是它經過確保類型必須是T的父類來設定類型的下界。
泛型類型必須用限定內的類型來進行初始化,不然會致使編譯錯誤。url
非限定通配符
: 表示了非限定通配符,由於能夠用任意類型來替代。spa
5、泛型中K T V E ?object等的含義 ?
E - Element (在集合中使用,由於集合中存放的是元素) T - Type(Java 類) K - Key(鍵) V - Value(值) N - Number(數值類型) ?- 表示不肯定的java類型(無限制通配符類型) Object - 是全部類的根類,任何類的對象均可以設置給該Object引用變量,使用的時候可能須要類型強制轉換,可是用使用了泛型T、E等這些標識符後,在實際用以前類型就已經肯定了,不須要再進行類型強制轉換。.net
6、編寫一個泛型方法,讓它能接受泛型參數並返回泛型類型 ?
public V put(K key, V value) { return cache.put(key, value); }
1.若是以爲這篇文章還不錯,來個分享、點贊吧,讓更多的人也看到