1薛窥、泛型(Generic)—泛形的作用
JDK5以前叉橱,對象保存到集合中就會失去其特性挫以,取出時通常要程序員手工進行類型的強制轉(zhuǎn)換,這樣不可避免就會引發(fā)程序的一些安全性問題窃祝。例如:
ArrayList list = new ArrayList();
list.add("abc");
Integer num = (Integer) list.get(0); //運行時會出錯掐松,但編碼時發(fā)現(xiàn)不了
JDK5中的泛形允許程序員在編寫集合代碼時,就限制集合的處理類型,從而把原來程序運行時可能發(fā)生問題大磺,轉(zhuǎn)變?yōu)榫幾g時的問題抡句,以此提高程序的可讀性和穩(wěn)定性(尤其在大型程序中更為突出)
注意:泛型是提供給javac編譯器使用的,它用于限定集合的輸入類型杠愧,讓編譯器在源代碼級別上待榔,即擋住向集合中插入非法數(shù)據(jù)。但編譯器編譯完帶有泛形的java程序后流济,【生成的class文件中將不再帶有泛型信息】锐锣,以此使程序運行效率不受到影響,這個過程稱之為“擦除”
使用泛形時绳瘟,泛形類型須為引用類型雕憔,不能是基本數(shù)據(jù)類型。
Java程序中的普通方法糖声、構(gòu)造方法和靜態(tài)方法中都可以使用泛型斤彼。
方法使用泛形前,必須對泛形進行聲明蘸泻,語法:<T> 畅卓,T可以是任意字母,但通常必須要大寫蟋恬。<T>通常需放在方法的返回值聲明之前翁潘。
類上面定義的泛型不適用與靜態(tài)方法
如果一個類多處都要用到同一個泛型,這時可以把泛形定義在類上(即類級別的泛型)
注意歼争,靜態(tài)方法不能使用類定義的泛形拜马,而應單獨定義泛形
2、泛型的高級應用——通配符
3沐绒、泛型的高級應用——有限制的通配符