Java中泛型的優(yōu)勢有哪些?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元利川做網(wǎng)站,已為上家服務(wù),為利川各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575
java 泛型
概要:
Java 泛型是java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱為泛型類、泛型接口、泛型方法。
泛型(Generic type 或者 generics)是對 Java 語言的類型系統(tǒng)的一種擴(kuò)展,以支持創(chuàng)建可以按類型進(jìn)行參數(shù)化的類。可以把類型參數(shù)看作是使用參數(shù)化類型時指定的類型的一個占位符,就像方法的形式參數(shù)是運行時傳遞的值的占位符一樣。
可以在集合框架(Collection framework)中看到泛型的動機(jī)。例如,Map 類允許您向一個 Map 添加任意類的對象,即使最常見的情況是在給定映射(map)中保存某個特定類型(比如 String)的對象。
因為 Map.get() 被定義為返回 Object,所以一般必須將 Map.get() 的結(jié)果強(qiáng)制類型轉(zhuǎn)換為期望的類型,如下面的代碼所示:
Map m = new HashMap(); m.put("key", "blarg"); String s = (String) m.get("key");
要讓程序通過編譯,必須將 get() 的結(jié)果強(qiáng)制類型轉(zhuǎn)換為 String,并且希望結(jié)果真的是一個 String。但是有可能某人已經(jīng)在該映射中保存了不是 String 的東西,這樣的話,上面的代碼將會拋出 ClassCastException。
理想情況下,您可能會得出這樣一個觀點,即 m 是一個 Map,它將 String 鍵映射到 String 值。這可以讓您消除代碼中的強(qiáng)制類型轉(zhuǎn)換,同時獲得一個附加的類型檢查層,該檢查層可以防止有人將錯誤類型的鍵或值保存在集合中。這就是泛型所做的工作。
泛型的好處
Java 語言中引入泛型是一個較大的功能增強(qiáng)。不僅語言、類型系統(tǒng)和編譯器有了較大的變化,以支持泛型,而且類庫也進(jìn)行了大翻修,所以許多重要的類,比如集合框架,都已經(jīng)成為泛型化的了。
這帶來了很多好處:
1,類型安全。泛型的主要目標(biāo)是提高 Java 程序的類型安全。通過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型假設(shè)。沒有泛型,這些假設(shè)就只存在于程序員的頭腦中(或者如果幸運的話,還存在于代碼注釋中)。
2,消除強(qiáng)制類型轉(zhuǎn)換。泛型的一個附帶好處是,消除源代碼中的許多強(qiáng)制類型轉(zhuǎn)換。這使得代碼更加可讀,并且減少了出錯機(jī)會。
3,潛在的性能收益。泛型為較大的優(yōu)化帶來可能。在泛型的初始實現(xiàn)中,編譯器將強(qiáng)制類型轉(zhuǎn)換(沒有泛型的話,程序員會指定這些強(qiáng)制類型轉(zhuǎn)換)插入生成的字節(jié)碼中。但是更多類型信息可用于編譯器這一事實,為未來版本的 JVM 的優(yōu)化帶來可能。由于泛型的實現(xiàn)方式,支持泛型(幾乎)不需要 JVM 或類文件更改。所有工作都在編譯器中完成,編譯器生成類似于沒有泛型(和強(qiáng)制類型轉(zhuǎn)換)時所寫的代碼,只是更能確保類型安全而已。
Java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動和隱式的,提高代碼的重用率。
泛型在使用中還有一些規(guī)則和限制:
1、泛型的類型參數(shù)只能是類類型(包括自定義類),不能是簡單類型。
2、同一種泛型可以對應(yīng)多個版本(因為參數(shù)類型是不確定的),不同版本的泛型類實例是不兼容的。
3、泛型的類型參數(shù)可以有多個。
4、泛型的參數(shù)類型可以使用extends語句,例如<T extends superclass>。習(xí)慣上成為“有界類型”。
5、泛型的參數(shù)類型還可以是通配符類型。例如Class<?> classType = Class.forName(Java.lang.String);
泛 型還有接口、方法等等,內(nèi)容很多,需要花費一番功夫才能理解掌握并熟練應(yīng)用。在此給出我曾經(jīng)了解泛型時候?qū)懗龅膬蓚€例子(根據(jù)看的印象寫的),實現(xiàn)同樣的 功能,一個使用了泛型,一個沒有使用,通過對比,可以很快學(xué)會泛型的應(yīng)用,學(xué)會這個基本上學(xué)會了泛型70%的內(nèi)容。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
新聞名稱:Java中泛型的優(yōu)勢有哪些
地址分享:http://aaarwkj.com/article10/gdsido.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站策劃、外貿(mào)建站、Google、微信公眾號、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)