一介紹:
在JavaSE1.5之前,沒有泛型的情況的下,通過對類型Object的引用來實現參數的“任意化”,“任意化”帶來的缺點是要做顯式的強制類型轉換,而這種轉換是要求開發者對實際參數類型可以預知的情況下進行的。對于強制類型轉換錯誤的情況,編譯器可能不提示錯誤,在運行的時候才出現異常,這是一個安全隱患。
泛型的好處是在編譯的時候檢查類型安全,并且所有的強制轉換都是自動和隱式的,提高代碼的重用率。
二、泛型參數:
classGen<T>{privateTob;//定義泛型成員變量publicGen(Tob){this.ob=ob;}publicTgetOb(){returnob;}publicvoidsetOb(Tob){this.ob=ob;}publicvoidshowType(){System.out.println("T的實際類型是:"+ob.getClass().getName());}}publicclassGenericParameter{publicstaticvoidmain(String[]args){//定義泛型類Gen的一個Integer版本Gen<Integer>intOb=newGen<Integer>(100);intOb.showType();inti=intOb.getOb();System.out.println("value="+i);System.out.println("----------------------------------");//定義泛型類Gen的一個String版本Gen<String>strOb=newGen<String>("HelloDylan!");strOb.showType();Strings=strOb.getOb();System.out.println("value="+s);}}
output:
T的實際類型是: java.lang.Integer
value= 100
----------------------------------
T的實際類型是: java.lang.String
value= Hello Dylan!
三、泛型類:
classGenericsFoo<T>{privateTx;publicGenericsFoo(Tx){this.x=x;}publicTgetX(){returnx;}publicvoidsetX(Tx){this.x=x;}}publicclassGenericClass{publicstaticvoidmain(Stringargs[]){GenericsFoo<String>strFoo=newGenericsFoo<String>("HelloGenerics!");GenericsFoo<double>douFoo=newGenericsFoo<double>(newdouble("33"));GenericsFoo<Object>objFoo=newGenericsFoo<Object>(newObject());System.out.println("strFoo.getX="+strFoo.getX());System.out.println("douFoo.getX="+douFoo.getX());System.out.println("objFoo.getX="+objFoo.getX());}}
output:
strFoo.getX=Hello Generics!
douFoo.getX=33.0
objFoo.getX=java.lang.Object@1d0fafc
四 限制泛型:
importjava.util.ArrayList;importjava.util.Collection;classCollectionGenFoo<TextendsCollection>{privateTx;publicCollectionGenFoo(Tx){this.x=x;}publicTgetX(){returnx;}publicvoidsetX(Tx){this.x=x;}}publicclassGenericRestrict{publicstaticvoidmain(String[]args){CollectionGenFoo<ArrayList>listFoo=null;listFoo=newCollectionGenFoo<ArrayList>(newArrayList());CollectionGenFoo<?extendsCollection>listFoo1=null;listFoo1=newCollectionGenFoo<ArrayList>(newArrayList());System.out.println("實例化成功!");}}
output:
實例化成功!
五 泛型方法:
publicclassGenericFunction{public<T>voidf(Tx){System.out.println(x.getClass().getName());}publicstaticvoidmain(String[]args){GenericFunctionea=newGenericFunction();ea.f("");ea.f(10);ea.f('a');ea.f(ea);}}
output:
java.lang.String
java.lang.Integer
java.lang.Character
GenericFunction
-----------------------------
dylan presents.
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
在上一篇文章中,筆者和大家聊了四平市、長春市等吉林省城市經濟發展和區劃變化的一系列故事。今天,我們來談談吉林省吉林市。吉林市是全國唯一同名的地級市。吉林市是吉林省的舊都,也是吉林省的重要城市。目前,吉林市下轄9個區縣。那么,吉林九區縣的格局是如何一步步形成的呢?首先說一下吉林省的基本情況。首先說一下吉林省的基本情況。吉林省屬于中國東北三省之一,是中國的糧食大省。吉林省礦產資源和糧食產量豐富。根據2...
投資性價比夏普比率是什么意思?投資性價比夏普比率是指收益風險比,即承擔一定的風險能帶來多少收益或報酬,等于收益與風險的比值。如果夏普比率大于1則表明承擔一份風險會帶來超過一份的收益回報,小于1則表明承擔一份風險帶來的收益回報小于-份, 投資者一般都愿意 選擇夏普比率大于1的產品。夏普比率一般多大比較好?夏普比率是以資本市場線作為評價基準,對投資績效作出評估。夏普比率越高,表明基金承擔單位風險可以獲...
(相關資料圖)1、一直被人們喻為愛情的象征,相傳他是一個頑皮的、身上長著翅膀的小神,他的箭一旦插入青年男女的心上,便會使他們深深相愛。2、在古希臘神話中,他是愛與美的女神(阿芙羅狄忒)Aphrodite與戰神(阿瑞斯)Ares的小兒子Eros。3、在羅馬神話中,他叫丘比特(Cupid),他的母親是維納斯(即阿芙羅狄忒)。以上就是【愛情之箭動畫版,愛情之箭】相關內容。...