您當前位置: 唯學網 » IT認證培訓 » 輔導專題

Java認證考試輔導之泛型講解

來源:唯學網•教育培訓(www.ddart-bg.com)  【唯學網 • 中國教育電子商務平臺】 加入收藏

由于Java認證在全球各大企業中具有較高的認可度,因此通過了Java認證考試,就表明你已經具備了很高水平的Java編程能力,為自己贏得了籌碼。下面唯學小編特整理了Java認證考試中Java泛型的主要內容,望準備參加考試的考生能夠認真查看,具體如下:

1、Java泛型

其實Java的泛型就是創建一個用類型作為參數的類。就象我們寫類的方法一樣,方法是這樣的method(String str1,String str2 ),方法中參數str1、str2的值是可變的。而泛型也是一

樣的,這樣寫class Java_Generics,這里邊的K和V就象方法中的參數str1和str2,也是可變。

1.1. 泛型通配符

下面我們先看看這些程序:

//Code list 2

void TestGen0Medthod1(List l){

for (Object o : l)

System.out.println(o);}

看看這個方法有沒有異議,這個方法會通過編譯的,假如你傳入String,就是這樣List.接著我們調用它,問題就出現了,我們將一個List當作List傳給了方法,JVM會給我們一個警告,說這個破壞了類型安全,因為從List中返回的都是Object類型的。

1.2. 編寫泛型類要注意:

1)在定義一個泛型類的時候,在"<>"之間定義形式類型參數,例如:"class TestGen",其中"K", "V"不代表值,而是表示類型。

2)實例化泛型對象的時候,一定要在類名后面指定類型參數的值(類型),一共要有兩次書寫。例如:TestGent=new TestGen();

3)泛型中,extends并不代表繼承,它是類型范圍限制。

2、泛型與數據類型轉換

2.1. 消除類型轉換

在JDK5.0中我們完全可以這么做,這里我們使用泛化版本的HashMap,這樣就不用我們來編寫類型轉換的代碼了,類型轉換的過程交給編譯器來處理,是不是很方便,而且很安全。上面是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之前我們只能忍著了,現在這種問題已經解決了,請看下面這個方法。我們傳入一個int這一基本型別,然后再將i的值直接添加到List中,其實List是不能儲存基本型別的,List中應該存儲對象,這里編譯器將int包裝成Integer,然后添加到List中去。接著我們用List.get(0);來檢索數據,并返回對象再將對象解包裝成int.恩,JDK5.0給我們帶來更多方便與安全。

2.3 限制泛型中類型參數的范圍

也許你已經發現在code list 1中的TestGen這個泛型類,其中K,V可以是任意的型別。也許你有時候呢想限定一下K和V當然范圍,怎么做呢?看看如下的代碼:

//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當然也可以是Number,也可以是Integer,Float,Double,Byte等?纯聪聢D也許能直觀些請看上圖A是上圖類中的基類,A1,A2分別是A的子類,A2有2個子類分別是A2_1,A2_2.然后我們定義一個受限的泛型類class MyGen,這個泛型的范圍就是上圖中蘭色部分。這個是單一的限制,你也可以對型別多重限制,如下:class C這個是下限的限制,Serializable是第2個上限。一個指定的類型參數可以具有一個或多個上限。具有多重限制的類型參數可以用于訪問它的每個限制的方法和域。

唯學網是一個大型的教育考試培訓平臺,更多Java認證考試考試報名,Java認證考試準考證和成績查詢等相關考試信息,請關注唯學網職業資格欄目IT認證考試培訓頻道。小編在此預祝每一位參加Java認證考試的考生都能夠順利通過,早日實現自己的夢想。

0% (0)
0% (10)
已有條評論
新聞瀏覽排行