亚洲中文精品a∨在线,国产在线精品在线精品,国产亚洲欧美一区,欧美肉肉丝视频一区二区

您當(dāng)前位置: 唯學(xué)網(wǎng) » IT認(rèn)證培訓(xùn) » 輔導(dǎo)專題

Java認(rèn)證考試輔導(dǎo)之泛型講解

來源:唯學(xué)網(wǎng)•教育培訓(xùn)(slhrvoh.cn)  【唯學(xué)網(wǎng) • 中國教育電子商務(wù)平臺】 加入收藏

由于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)自己的夢想。

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