久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

Java泛型面試題有哪些

本篇內(nèi)容主要講解“Java泛型面試題有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java泛型面試題有哪些”吧!

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到朝天網(wǎng)站設(shè)計(jì)與朝天網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋朝天地區(qū)。

139. Java中的泛型是什么 ? 使用泛型的好處是什么?

        泛型是Java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說(shuō)所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)。

好處:

        1、類型安全,提供編譯期間的類型檢測(cè)

       2、前后兼容

        3、泛化代碼,代碼可以更多的重復(fù)利用

        4、性能較高,用GJ(泛型JAVA)編寫(xiě)的代碼可以為java編譯器和虛擬機(jī)帶來(lái)更多的類型信息,這些信息對(duì)java程序做進(jìn)一步優(yōu)化提供條件。

140,Java的泛型是如何工作的 ? 什么是類型擦除 ?如何工作?

       1、類型檢查:在生成字節(jié)碼之前提供類型檢查

        2、類型擦除:所有類型參數(shù)都用他們的限定類型替換,包括類、變量和方法(類型擦除)

        3、如果類型擦除和多態(tài)性發(fā)生了沖突時(shí),則在子類中生成橋方法解決

        4、如果調(diào)用泛型方法的返回類型被擦除,則在調(diào)用該方法時(shí)插入強(qiáng)制類型轉(zhuǎn)換

類型擦除:

        所有類型參數(shù)都用他們的限定類型替換:

比如T->Object   ? extends BaseClass->BaseClass

如何工作:

        泛型是通過(guò)類型擦除來(lái)實(shí)現(xiàn)的,編譯器在編譯時(shí)擦除了所有類型相關(guān)的信息,所以在運(yùn)行時(shí)不存在任何類型相關(guān)的信息。例如 List<String>在運(yùn)行時(shí)僅用一個(gè)List來(lái)表示。這樣做的目的,是確保能和Java 5之前的版本開(kāi)發(fā)二進(jìn)制類庫(kù)進(jìn)行兼容。你無(wú)法在運(yùn)行時(shí)訪問(wèn)到類型參數(shù),因?yàn)榫幾g器已經(jīng)把泛型類型轉(zhuǎn)換成了原始類型。根據(jù)你對(duì)這個(gè)泛型問(wèn)題的回答情況,你會(huì)得到一些后續(xù)提問(wèn),比如為什么泛型是由類型擦除來(lái)實(shí)現(xiàn)的或者給你展示一些會(huì)導(dǎo)致編譯器出錯(cuò)的錯(cuò)誤泛型代碼。

141,你可以把List<String>傳遞給一個(gè)接受List<Object>參數(shù)的方法嗎?

        對(duì)任何一個(gè)不太熟悉泛型的人來(lái)說(shuō),這個(gè)Java泛型題目看起來(lái)令人疑惑,因?yàn)檎Э雌饋?lái)String是一種Object,所以 List<String>應(yīng)當(dāng)可以用在需要List<Object>的地方,但是事實(shí)并非如此。真這樣做的話會(huì)導(dǎo)致編譯錯(cuò)誤。如果你再深一步考慮,你會(huì)發(fā)現(xiàn)Java這樣做是有意義的,因?yàn)長(zhǎng)ist<Object>可以存儲(chǔ)任何類型的對(duì)象包括String, Integer等等,而List<String>卻只能用來(lái)存儲(chǔ)String s。

List<Object> objectList;

List<String> stringList;

objectList = stringList; //compilation error incompatible types

142,如何阻止Java中的類型未檢查的警告?

        如果你把泛型和原始類型混合起來(lái)使用,例如下列代碼,java 5的javac編譯器會(huì)產(chǎn)生類型未檢查的警告,例如

List<String> rawList = newArrayList()

注意: Hello.java使用了未檢查或稱為不安全的操作;

這種警告可以使用@SuppressWarnings(“unchecked”)注解來(lái)屏蔽。

143,Java中List<Object>和原始類型List之間的區(qū)別?

        原始類型和帶參數(shù)類型<Object>之間的主要區(qū)別是,在編譯時(shí)編譯器不會(huì)對(duì)原始類型進(jìn)行類型安全檢查,卻會(huì)對(duì)帶參數(shù)的類型進(jìn)行檢查,通過(guò)使用Object作為類型,可以告知編譯器該方法可以接受任何類型的對(duì)象,比如String或Integer。

        這道題的考察點(diǎn)在于對(duì)泛型中原始類型的正確理解。它們之間的第二點(diǎn)區(qū)別是,你可以把任何帶參數(shù)的類型傳遞給原始類型List,但卻不能把List<String>傳遞給接受 List<Object>的方法,因?yàn)闀?huì)產(chǎn)生編譯錯(cuò)誤。

144,編寫(xiě)一段泛型程序來(lái)實(shí)現(xiàn)LRU緩存?

        對(duì)于喜歡Java編程的人來(lái)說(shuō)這相當(dāng)于是一次練習(xí)。給你個(gè)提示,LinkedHashMap可以用來(lái)實(shí)現(xiàn)固定大小的LRU緩存,當(dāng)LRU緩存已經(jīng)滿了的時(shí)候,它會(huì)把最老的鍵值對(duì)移出緩存。

        LinkedHashMap提供了一個(gè)稱為removeEldestEntry()的方法,該方法會(huì)被put() 和putAll()調(diào)用來(lái)刪除最老的鍵值對(duì)。當(dāng)然,如果你已經(jīng)編寫(xiě)了一個(gè)可運(yùn)行的JUnit測(cè)試,你也可以隨意編寫(xiě)你自己的實(shí)現(xiàn)代碼。

145,Array中可以用泛型嗎?

        這可能是Java泛型面試題中最簡(jiǎn)單的一個(gè)了,當(dāng)然前提是你要知道Array事實(shí)上并不支持泛型,這也是為什么Joshua Bloch在Effective Java一書(shū)中建議使用List來(lái)代替Array,因?yàn)長(zhǎng)ist可以提供編譯期的類型安全保證,而Array卻不能。

146,如何編寫(xiě)一個(gè)泛型方法,讓它能接受泛型參數(shù)并返回泛型類型?

        編寫(xiě)泛型方法并不困難,你需要用泛型類型來(lái)替代原始類型,比如使用T, E or K,V等被廣泛認(rèn)可的類型占位符。最簡(jiǎn)單的情況下,一個(gè)泛型方法可能會(huì)像這樣:

   public V put(K key, V value) {

   return cahe.put(key,value);

}

147,C++模板和java泛型之間有何不同?

        java泛型實(shí)現(xiàn)根植于“類型消除”這一概念。當(dāng)源代碼被轉(zhuǎn)換為Java虛擬機(jī)字節(jié)碼時(shí),這種技術(shù)會(huì)消除參數(shù)化類型。有了Java泛型,我們可以做的事情也并沒(méi)有真正改變多少;他只是讓代碼變得漂亮些。鑒于此,Java泛型有時(shí)也被稱為“語(yǔ)法糖”。

        這和 C++模板截然不同。在 C++中,模板本質(zhì)上就是一套宏指令集,只是換了個(gè)名頭,編譯器會(huì)針對(duì)每種類型創(chuàng)建一份模板代碼的副本。

由于架構(gòu)設(shè)計(jì)上的差異,Java泛型和C++模板有很多不同點(diǎn):

   C++模板可以使用int等基本數(shù)據(jù)類型。Java則不行,必須轉(zhuǎn)而使用Integer。

    在Java中,可以將模板的參數(shù)類型限定為某種特定類型。

    在C++中,類型參數(shù)可以實(shí)例化,但java不支持。

    在Java中,類型參數(shù)不能用于靜態(tài)方法(?)和變量,因?yàn)樗鼈儠?huì)被不同類型參數(shù)指定的實(shí)例共享。在C++,這些類時(shí)不同的,因此類型參數(shù)可以用于靜態(tài)方法和靜態(tài)變量。

        在Java中,不管類型參數(shù)是什么,所有的實(shí)例變量都是同一類型。類型參數(shù)會(huì)在運(yùn)行時(shí)被抹去。在C++中,類型參數(shù)不同,實(shí)例變量也不同。

到此,相信大家對(duì)“Java泛型面試題有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

新聞標(biāo)題:Java泛型面試題有哪些
URL分享:http://sd-ha.com/article4/popjoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、微信小程序定制開(kāi)發(fā)、軟件開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)