簡述java常用3種泛型定義及其作用

2021-03-19 18:18:55 字數 5055 閱讀 6606

1樓:匿名使用者

泛型(generic type 或者 generics)是對 java 語言的型別系統的一種擴充套件,以支援建立可以按型別進行引數化的類。可以把型別引數看作是使用引數化型別時指定的型別的一個佔位符,就像方法的形式引數是執行時傳遞的值的佔位符一樣。

定義泛型方法語法格式如下:

定義泛型方法時,必須在返回值前邊加一個,來宣告這是一個泛型方法,持有一個泛型t,然後才可以用泛型t作為方法的返回值。

class的作用就是指明泛型的具體型別,而class型別的變數c,可以用來建立泛型類的物件。

java泛型的作用,舉例說明!

2樓:匿名使用者

簡言之,泛型是為了避免類轉換異常的發生,使程式操作更安全,舉例:

1、宣告泛

型:class point

public void setvar(t var)}2、使用point類將var的型別設定成整數public class test

}3、執行:60

分析:使用泛型強制型別為某型別,比如上面為integer,在使用setvar()方法時如果引數不是integer(如string),程式就會報錯,提示輸入非法。當然你認為也可以不用泛型,比如將point定義如下:

class point1

public void setvar(object var)}此時,test程式依然可以執行,但是如果將test改動如下:

public class test

}程式編寫正常,不會報錯,但到了執行才提示異常。而如果上面是應用泛型,在寫下system.out.

println(p.getvar() * 2);直接就會在寫程式時提示錯誤!

這樣就達到了使用泛型的目的——避免類轉換異常的發生,使程式操作更安全。

希望能幫到你!

3樓:南芷兮膠

舉個例子來說

你的錢包裡你規定只裝錢

那麼你去出來的想也不想就是錢,管他是¥還是$不用轉換的-->都是錢(確定裡面是什麼)

不用泛型的話 就不規定放什麼

那麼你取出來的東西就不一定是錢,這樣你就要轉換了,那要是石頭的話你要轉換成錢就錯了(不確定裡面到底是什麼),推薦你看看動力節點的教程,裡面有詳細的關於案例介紹。

java泛型有什麼作用

4樓:硪丨曖戀

java 泛型是java se 1.5的新特性,泛型的本質是引數化型別,也就是說所操作的資料型別被指定為一個引數。這種引數型別可以用在類、介面和方法的建立中,分別稱為泛型類、泛型介面、泛型方法。

泛型(generic type 或者 generics)是對 java 語言的型別系統的一種擴充套件,以支援建立可以按型別進行引數化的類。可以把型別引數看作是使用引數化型別時指定的型別的一個佔位符,就像方法的形式引數是執行時傳遞的值的佔位符一樣。

可以在集合框架(collection framework)中看到泛型的動機。例如,map 類允許您向一個 map 新增任意類的物件,即使最常見的情況是在給定對映(map)中儲存某個特定型別(比如 string)的物件。

因為 map.get() 被定義為返回 object,所以一般必須將 map.get() 的結果強制型別轉換為期望的型別,如下面的**所示:

map m = new hashmap();

m.put("key", "blarg");

string s = (string) m.get("key");

要讓程式通過編譯,必須將 get() 的結果強制型別轉換為 string,並且希望結果真的是一個 string。但是有可能某人已經在該對映中儲存了不是 string 的東西,這樣的話,上面的**將會丟擲 classcastexception。

理想情況下,您可能會得出這樣一個觀點,即 m 是一個 map,它將 string 鍵對映到 string 值。這可以讓您消除**中的強制型別轉換,同時獲得一個附加的型別檢查層,該檢查層可以防止有人將錯誤型別的鍵或值儲存在集合中。這就是泛型所做的工作。

泛型的好處

java 語言中引入泛型是一個較大的功能增強。不僅語言、型別系統和編譯器有了較大的變化,以支援泛型,而且類庫也進行了大翻修,所以許多重要的類,比如集合框架,都已經成為泛型化的了。

這帶來了很多好處:

1,型別安全。 泛型的主要目標是提高 java 程式的型別安全。通過知道使用泛型定義的變數的型別限制,編譯器可以在一個高得多的程度上驗證型別假設。

沒有泛型,這些假設就只存在於程式設計師的頭腦中(或者如果幸運的話,還存在於**註釋中)。

2,消除強制型別轉換。 泛型的一個附帶好處是,消除源**中的許多強制型別轉換。這使得**更加可讀,並且減少了出錯機會。

3,潛在的效能收益。 泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制型別轉換(沒有泛型的話,程式設計師會指定這些強制型別轉換)插入生成的位元組碼中。

但是更多型別資訊可用於編譯器這一事實,為未來版本的 jvm 的優化帶來可能。由於泛型的實現方式,支援泛型(幾乎)不需要 jvm 或類檔案更改。所有工作都在編譯器中完成,編譯器生成類似於沒有泛型(和強制型別轉換)時所寫的**,只是更能確保型別安全而已。

java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查型別安全,並且所有的強制轉換都是自動和隱式的,提高**的重用率。

泛型在使用中還有一些規則和限制:

1、泛型的型別引數只能是類型別(包括自定義類),不能是簡單型別。

2、同一種泛型可以對應多個版本(因為引數型別是不確定的),不同版本的泛型類例項是不相容的。

3、泛型的型別引數可以有多個。

4、泛型的引數型別可以使用extends語句,例如。習慣上成為「有界型別」。

5、泛型的引數型別還可以是萬用字元型別。例如class<?> classtype = class.forname(java.lang.string);

泛 型還有介面、方法等等,內容很多,需要花費一番功夫才能理解掌握並熟練應用。在此給出我曾經瞭解泛型時候寫出的兩個例子(根據看的印象寫的),實現同樣的 功能,一個使用了泛型,一個沒有使用,通過對比,可以很快學會泛型的應用,學會這個基本上學會了泛型70%的內容。

5樓:匿名使用者

採用泛型可以減少你對資料型別的要求,需要什麼型別再強轉成什麼型別

java中在定義泛型泛型方法是方法名前加上泛型有什麼作用,也就是方法前的的作用 5

6樓:劉黃銀瀛

static void show(collectionc)//這個泛型方法中定義了一個t型別形參,這個t型別形參可以在該方法內當成普通型別使用。這裡無需顯示傳入實際型別引數,無論呼叫該方法時傳入什麼型別的值,系統都可以判斷出最直接的型別引數。舉個例子給你看可能會更加明白:

import java.util.*;

public class 泛型test

static void show2(collection c)public static void main(string args)}

7樓:匿名使用者

首先要說明的是,代表泛型,但不止,還有,,等,都是用到了java中的泛型。一般使用來宣告型別持有者名稱,自定義泛型類時,類持有者名稱可以使用t(type)。如果是容器的元素可以使用e(element),若鍵值匹配可以用k(key)和v(value)等,若是<?

>,則是預設是允許object及其下的子類,也就是java的所有物件了。

所以說,如果是字每a,b,c,d...定義的,就是泛型,這裡t只是名字上的意義而已t---type,e----element,k----key, v----value,如果是?定義的,就是普通的object或者其子類。

舉例說明:

set表示 集合裡 是 t類的例項

list表示 集合裡 是 e類的例項

list<?> 表示 集合裡的物件型別不確定,未指定

list 同 list<?> 是一樣的。

泛型的作用:

1、用泛型:

listlist=new arraylist();

t t=list.get(0);

2、不用泛型:

list list=new arraylist();

t t=(t)list.get(0);

相信你已經看出:

a、用泛型只是確定了集合內的元素的型別,但卻是在編譯時確定了元素的型別再取出來時已經不再需要強轉,增強程式可讀性,穩定性和效率

b、不用泛型時,如果是裝入集合操作,那麼元素都被當做object對待,失去自己的型別,那麼從集合中取出來時,往往需要轉型,效率低,容易產生錯誤

8樓:神帝天雲

也就是範圍的意思,這樣可以提高他的使用效率和使用速度

java中在定義泛型泛型方法是方法名前加上泛型有什麼作用?

9樓:劉黃銀瀛

static void show(collectionc)//這個泛型方法中定義了一個t型別形參,這個t型別形參可以在該方法內當成普通型別使用。這裡無需顯示傳入實際型別引數,無論呼叫該方法時傳入什麼型別的值,系統都可以判斷出最直接的型別引數。舉個例子給你看可能會更加明白:

import java.util.*;

public class 泛型test

static void show2(collection c)public static void main(string args)}

java中的泛型是幹嘛的,起到什麼作用??什麼情況下才能用到泛型??

10樓:20締造者

泛型:規定了此集合中元素的型別。

例如:arraylistarr = new arraylist();

這樣就建立了一個包含整數的 arraylist 物件。

如果要自己定義泛型類,就用如下形式:

class mycollection

尖括號中的型別可以有限制,例如你需要讓 mycollection 中的型別都具有可比性,可以用如下格式:

class mycollection

11樓:小溼底

限制使用物件型別,起到程式編譯時限制作用

常用3500漢字如何確定的,中學生常用的3500個漢字是什麼?

常用字就是書寫現代漢語經常要用到的字 常用字表的研製工作,始於1928年 語體文應用字彙 的編制.1952年教育部公佈了 常用字表 該表選頂的2000個常用字一直是掃盲的標準.1988年1月,國家語言文字工作委員會和國家教育委員會制定的 現代漢語常用字表 正式頒佈.其中選定常用字2500個,次常用字...

列出園林景觀中常用管道的型別,簡述其施工工藝

園林管道的施工一般採用地埋方式.對管道的維修和安裝建議使用給水用pe或者ppr給水管道.如果成本相對較低的話,可以使用pvc給水管道.一般來說,管道的施工工藝沒有太大的區別.pe ppr管道採用熱熔連線.pvc採用專用膠水腐蝕粘接.但是膠水粘接存在很多問題.建議你採用前者.四川省川匯塑膠 園林綠化工...

不常用的漢字有哪些,簡單不常用的字有哪些, 30個最好

內容來自使用者 胡建華234 覬覦j y 齟齬j y 囹圄l ngy 魍魎w ngli ng紈絝w nk 鱖魚gu y 耄耋m odi 饕餮t oti 痤瘡cu chu ng踟躇ch ch 倥傯k n z n 另 倥侗念k ngd ng。彳亍ch ch 諂媚ch nm i女紅n g ng古同 工 佝...