一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java 泛型有哪些好處詳解

Java 泛型有哪些好處詳解

2020-08-20 11:10Java之家 Java教程

這篇文章主要介紹了 Java 泛型有哪些好處詳解的相關資料,需要的朋友可以參考下

java 泛型

概要:

       Java 泛型是java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱為泛型類、泛型接口、泛型方法。  

       泛型(Generic type 或者 generics)是對 Java 語言的類型系統(tǒng)的一種擴展,以支持創(chuàng)建可以按類型進行參數(shù)化的類??梢园杨愋蛥?shù)看作是使用參數(shù)化類型時指定的類型的一個占位符,就像方法的形式參數(shù)是運行時傳遞的值的占位符一樣。

        可以在集合框架(Collection framework)中看到泛型的動機。例如,Map 類允許您向一個 Map 添加任意類的對象,即使最常見的情況是在給定映射(map)中保存某個特定類型(比如 String)的對象。
因為 Map.get() 被定義為返回 Object,所以一般必須將 Map.get() 的結(jié)果強制類型轉(zhuǎn)換為期望的類型,如下面的代碼所示:

?
1
2
3
Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");

要讓程序通過編譯,必須將 get() 的結(jié)果強制類型轉(zhuǎn)換為 String,并且希望結(jié)果真的是一個 String。但是有可能某人已經(jīng)在該映射中保存了不是 String 的東西,這樣的話,上面的代碼將會拋出 ClassCastException。

理想情況下,您可能會得出這樣一個觀點,即 m 是一個 Map,它將 String 鍵映射到 String 值。這可以讓您消除代碼中的強制類型轉(zhuǎn)換,同時獲得一個附加的類型檢查層,該檢查層可以防止有人將錯誤類型的鍵或值保存在集合中。這就是泛型所做的工作。 

泛型的好處

Java 語言中引入泛型是一個較大的功能增強。不僅語言、類型系統(tǒng)和編譯器有了較大的變化,以支持泛型,而且類庫也進行了大翻修,所以許多重要的類,比如集合框架,都已經(jīng)成為泛型化的了。
這帶來了很多好處:

1,類型安全。 泛型的主要目標是提高 Java 程序的類型安全。通過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在于程序員的頭腦中(或者如果幸運的話,還存在于代碼注釋中)。

2,消除強制類型轉(zhuǎn)換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉(zhuǎn)換。這使得代碼更加可讀,并且減少了出錯機會。 

3,潛在的性能收益。 泛型為較大的優(yōu)化帶來可能。在泛型的初始實現(xiàn)中,編譯器將強制類型轉(zhuǎn)換(沒有泛型的話,程序員會指定這些強制類型轉(zhuǎn)換)插入生成的字節(jié)碼中。但是更多類型信息可用于編譯器這一事實,為未來版本的 JVM 的優(yōu)化帶來可能。由于泛型的實現(xiàn)方式,支持泛型(幾乎)不需要 JVM 或類文件更改。所有工作都在編譯器中完成,編譯器生成類似于沒有泛型(和強制類型轉(zhuǎn)換)時所寫的代碼,只是更能確保類型安全而已。 

 Java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,并且所有的強制轉(zhuǎn)換都是自動和隱式的,提高代碼的重用率。

    泛型在使用中還有一些規(guī)則和限制:

    1、泛型的類型參數(shù)只能是類類型(包括自定義類),不能是簡單類型。
    2、同一種泛型可以對應多個版本(因為參數(shù)類型是不確定的),不同版本的泛型類實例是不兼容的。
    3、泛型的類型參數(shù)可以有多個。
    4、泛型的參數(shù)類型可以使用extends語句,例如<T extends superclass>。習慣上成為“有界類型”。
    5、泛型的參數(shù)類型還可以是通配符類型。例如Class<?> classType = Class.forName(Java.lang.String);

    泛 型還有接口、方法等等,內(nèi)容很多,需要花費一番功夫才能理解掌握并熟練應用。在此給出我曾經(jīng)了解泛型時候?qū)懗龅膬蓚€例子(根據(jù)看的印象寫的),實現(xiàn)同樣的 功能,一個使用了泛型,一個沒有使用,通過對比,可以很快學會泛型的應用,學會這個基本上學會了泛型70%的內(nèi)容。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/qq_35101189/article/details/57949135

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天曰| 我要色色网 | 教室里的激情电影 | 亚洲成色 | 国产成人综合久久精品红 | 美女班主任让我爽了一夜视频 | 日韩在线一区二区三区 | 丝瓜草莓香蕉绿巨人幸福宝 | 草草视频在线免费观看 | 日本午夜vr影院新入口 | 亚洲欧美在线观看首页 | 亚洲国产一区二区三区a毛片 | 国产九九热视频 | 精品国产品在线18年 | ipx-177绝对领域在线观看 | 肉浦团在线观看 | 国产激情视频 | 色综合久久综合网欧美综合网 | 十六一下岁女子毛片免费 | 国产一卡2卡3卡四卡高清 | 男同gay玩奴男同玩奴 | 精品无码人妻一区二区免费AV | 免费一级特黄特色大片∵黄 | 四虎国产精品免费久久麻豆 | hd性欧美俱乐部中文 | 美女下面揉出水免费视频 | 欧美又硬又粗又长又大 | 日韩综合久久 | 精品国产一区二区三区久久久狼 | 俄罗斯一级在线播放 | 99爱免费| 久九九精品免费视频 | 日本高清免费中文字幕不卡 | 无人在线视频高清免费观看动漫 | 国产高清在线精品一区二区三区 | 深夜在线网站 | 三上悠亚国产精品一区 | 青青久久精品国产免费看 | 91精品免费国产高清在线 | 狠狠色成人综合网图片区 | 全肉一女n男np高h双龙养成 |