由于Java認(rèn)證在全球各大企業(yè)中具有較高的認(rèn)可度,因此通過了Java認(rèn)證考試,就表明你已經(jīng)具備了很高水平的Java編程能力,為自己贏得了籌碼。下面唯學(xué)小編特整理了Java認(rèn)證考試中Java泛型的主要內(nèi)容,望準(zhǔn)備參加考試的考生能夠認(rèn)真查看,具體如下:
1、Java泛型
其實Java的泛型就是創(chuàng)建一個用類型作為參數(shù)的類。就象我們寫類的方法一樣,方法是這樣的method(String str1,String str2 ),方法中參數(shù)str1、str2的值是可變的。而泛型也是一
樣的,這樣寫class Java_Generics,這里邊的K和V就象方法中的參數(shù)str1和str2,也是可變。
1.1. 泛型通配符
下面我們先看看這些程序:
//Code list 2
void TestGen0Medthod1(List l){
for (Object o : l)
System.out.println(o);}
看看這個方法有沒有異議,這個方法會通過編譯的,假如你傳入String,就是這樣List.接著我們調(diào)用它,問題就出現(xiàn)了,我們將一個List當(dāng)作List傳給了方法,JVM會給我們一個警告,說這個破壞了類型安全,因為從List中返回的都是Object類型的。
1.2. 編寫泛型類要注意:
1)在定義一個泛型類的時候,在"<>"之間定義形式類型參數(shù),例如:"class TestGen",其中"K", "V"不代表值,而是表示類型。
2)實例化泛型對象的時候,一定要在類名后面指定類型參數(shù)的值(類型),一共要有兩次書寫。例如:TestGent=new TestGen();
3)泛型中,extends并不代表繼承,它是類型范圍限制。
2、泛型與數(shù)據(jù)類型轉(zhuǎn)換
2.1. 消除類型轉(zhuǎn)換
在JDK5.0中我們完全可以這么做,這里我們使用泛化版本的HashMap,這樣就不用我們來編寫類型轉(zhuǎn)換的代碼了,類型轉(zhuǎn)換的過程交給編譯器來處理,是不是很方便,而且很安全。上面是String映射到String,也可以將Integer映射為String,只要寫成HashTableh=new HashTable();h.get(new Integer(0))返回value.果然很方便。
2.2 自動解包裝與自動包裝的功能
從上面有沒有看到有點別扭啊,h.get(new Integer(123))這里的new Integer(123);好煩的,在JDK5.0之前我們只能忍著了,現(xiàn)在這種問題已經(jīng)解決了,請看下面這個方法。我們傳入一個int這一基本型別,然后再將i的值直接添加到List中,其實List是不能儲存基本型別的,List中應(yīng)該存儲對象,這里編譯器將int包裝成Integer,然后添加到List中去。接著我們用List.get(0);來檢索數(shù)據(jù),并返回對象再將對象解包裝成int.恩,JDK5.0給我們帶來更多方便與安全。
2.3 限制泛型中類型參數(shù)的范圍
也許你已經(jīng)發(fā)現(xiàn)在code list 1中的TestGen這個泛型類,其中K,V可以是任意的型別。也許你有時候呢想限定一下K和V當(dāng)然范圍,怎么做呢?看看如下的代碼:
//Code list 8
class TestGen2
{private V v=null;
private K k=null;
public void setV(V v){
this.v=v;}
public V getV(){
return this.v;}
public void setK(K k){
this.k=k; }
public V getK(){
return this.k; }
public static void main(String[] args)
{TestGen2t2=new TestGen2();
t2.setK(new String("String"));
t2.setV(new Integer(123));
System.out.println(t2.getK());
System.out.println(t2.getV());}}
上邊K的范圍是<=String ,V的范圍是<=Number,注意是"<=",對于K可以是String的,V當(dāng)然也可以是Number,也可以是Integer,Float,Double,Byte等?纯聪聢D也許能直觀些請看上圖A是上圖類中的基類,A1,A2分別是A的子類,A2有2個子類分別是A2_1,A2_2.然后我們定義一個受限的泛型類class MyGen,這個泛型的范圍就是上圖中蘭色部分。這個是單一的限制,你也可以對型別多重限制,如下:class C這個是下限的限制,Serializable是第2個上限。一個指定的類型參數(shù)可以具有一個或多個上限。具有多重限制的類型參數(shù)可以用于訪問它的每個限制的方法和域。
唯學(xué)網(wǎng)是一個大型的教育考試培訓(xùn)平臺,更多Java認(rèn)證考試考試報名,Java認(rèn)證考試準(zhǔn)考證和成績查詢等相關(guān)考試信息,請關(guān)注唯學(xué)網(wǎng)職業(yè)資格欄目IT認(rèn)證考試培訓(xùn)頻道。小編在此預(yù)祝每一位參加Java認(rèn)證考試的考生都能夠順利通過,早日實現(xiàn)自己的夢想。
|
|
||
|
|
||
|
|