1樓:昔年
初學java,看了thinking in java的泛型一章,java泛型我只看到一個作用:能夠進行編譯期間型別檢查。
除此之外還有什麼作用呢?特別的是跟「泛型」這個詞有關係的作用?
由於擦除的關係,能用java泛型寫的**,直接針對object類來寫就能達到目的(只是沒了編譯期型別檢查另外某些地方要自己新增轉型),就算用了限定邊界這種直接針對類a來寫**也是一樣。
正如thinking in java的作者提到的,瞭解了java的泛型後,我都懷疑java的泛型是否配得上這個名稱了。
java中的泛型是幹嘛的,起到什麼作用??什麼情況下才能用到泛型??
2樓:20締造者
泛型:規定了此集合中元素的型別。
例如:arraylistarr = new arraylist();
這樣就建立了一個包含整數的 arraylist 物件。
如果要自己定義泛型類,就用如下形式:
class mycollection
尖括號中的型別可以有限制,例如你需要讓 mycollection 中的型別都具有可比性,可以用如下格式:
class mycollection
3樓:小溼底
限制使用物件型別,起到程式編譯時限制作用
java裡泛型有什麼作用?我怎麼覺得那個可寫可不寫
4樓:匿名使用者
舉個例子來說
你的錢包裡你規定只裝錢
那麼你去出來的想
也不想就是錢,管他是¥還是$不用轉換的-->都是錢(確定裡面是什麼)不用泛型的話 就不規定放什麼
那麼你取出來的東西就不一定是錢,這樣你就要轉換了,那要是石頭的話你要轉換成錢就錯了(不確定裡面到底是什麼)
5樓:匿名使用者
很多時候,尤其在使用物件的多型性的時候,你不知道進到你資料結構中的物件到底是什麼型別的,執行的時候就會出問題。泛型就是限定一個資料結構,或者一個方法引數只允許傳入什麼型別的物件。
比如類a,類b,類c,b和c繼承a。b中有屬性abc,c中有屬性def
定義一個沒有泛型的list,這時候你可以隨便往裡存,但從list往外取的時候(假設取出的物件叫obj),你要呼叫abc就要先轉型,這時候c的物件會異常……
沒事多看看教程,多敲敲**,基本上練著練著也就會了,有一套動力節點301集java基礎教程裡面講的很有趣也講得很細緻明瞭,建議你去看看。
6樓:匿名使用者
泛型賦予了型別引數式多型
的能力泛型的第一個好處是編譯時的嚴格型別檢查。有效的避免了執行期的classcastexception,提高了程式的安全性和健壯性。
這是集合框架最重要的特點。此外,泛型消除了絕大多數的型別轉換。如果沒有泛型,當你使用集合框架時,你不得不進行型別轉換。
另外 泛型簡化了**,應用泛型的程式提高程式的可讀性,更利於團隊的合作開發。
7樓:百度使用者
首先你要明白:
他給出的這個泛型,不是無意義的.
如果定義容器了list,如果你不定義他的泛型,那麼他可以放不同型別的東西.
比如你定義了一個list,這樣的話
他只可以存放整型的資料,一旦你想要放其他的型別的資料,他會包錯.
所以這個泛型的目的就是是定義的容器所放的內容是一個統一的型別.
8樓:匿名使用者
knightzhuwei 說的很正確 貌似也沒什麼好補充的。。。
簡單點說 物件導向設計的最重要的目的之一 就是管理 泛型是管理中的一個比較常見的方法 假設
a,b繼承了c 而d裡面有個方法getc(c c) 那麼 你想往這裡傳除c和他的子類之外其他引數的時候 必然是傳不進去的 有效的提高了安全性 更明確了該方法的目的 這樣就明白了吧?
9樓:匿名使用者
在用集合類的時候
不用泛型我就不舒服……
10樓:匿名使用者
泛型是java jdk1.5出的新功能。它主要是對同一種型別做的集合,有很多人說他不好用,但是sun既然提供了他就是讓我們來用的,這樣可以少些很多**。
11樓:匿名使用者
java泛型的作用,舉例說明!
12樓:匿名使用者
簡言之,泛型是為了避免類轉換異常的發生,使程式操作更安全,舉例:
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);直接就會在寫程式時提示錯誤!
這樣就達到了使用泛型的目的——避免類轉換異常的發生,使程式操作更安全。
希望能幫到你!
13樓:南芷兮膠
舉個例子來說
你的錢包裡你規定只裝錢
那麼你去出來的想也不想就是錢,管他是¥還是$不用轉換的-->都是錢(確定裡面是什麼)
不用泛型的話 就不規定放什麼
那麼你取出來的東西就不一定是錢,這樣你就要轉換了,那要是石頭的話你要轉換成錢就錯了(不確定裡面到底是什麼),推薦你看看動力節點的教程,裡面有詳細的關於案例介紹。
java中為什麼要使用泛型
14樓:匿名使用者
public genericexample_2(string testattribute)
15樓:乘風偷月
使用泛型是為了編譯時出現錯誤了能及時提醒。另外,也是限定要操作的物件型別。
如:listlist=new arraylist();它的操作物件就只能是string型別。
class dog{}
16樓:
java 語言中引入泛型是一個較大的功能增強。
泛型好處:
1,型別安全。 泛型的主要目標是提高 java 程式的型別安全。通過知道使用泛型定義的變數的型別限制,編譯器可以在一個高得多的程度上驗證型別假設。
沒有泛型,這些假設就只存在於程式設計師的頭腦中(或者如果幸運的話,還存在於**註釋中)。
2,消除強制型別轉換。 泛型的一個附帶好處是,消除源**中的許多強制型別轉換。這使得**更加可讀,並且減少了出錯機會。
3,潛在的效能收益。 泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制型別轉換(沒有泛型的話,程式設計師會指定這些強制型別轉換)插入生成的位元組碼中。
但是更多型別資訊可用於編譯器這一事實,為未來版本的 jvm 的優化帶來可能。由於泛型的實現方式,支援泛型(幾乎)不需要 jvm 或類檔案更改。所有工作都在編譯器中完成,編譯器生成類似於沒有泛型(和強制型別轉換)時所寫的**,更能確保型別安全。
java裡面使用泛型的優點
17樓:匿名使用者
使用泛型之後,集合類取資料時就不需要對儲存的資料進行強制型別轉換。
也避免了一些異常的出現。
例如listlist=new arraylist();
list.add("123");
string str=list.get(0);
如果不適用泛型就是這樣。
list list=new arraylist();
list.add(123);
string str=(string)list.get(0);
如果這樣就會出現型別轉換的異常。
java.lang.integer cannot be cast to java.lang.string
18樓:匿名使用者
由於集合裡面能放各種各樣資料格式的資料, 使用泛型之後能限制放入的資料型別, 從而起到一定的控制作用!!!
19樓:永遠不知終點
我覺得主要是有兩點,第一點是用泛型寫**比較容易,第二點是其型別比較安全。希望對你有所幫助。
java裡面使用泛型有哪些優點?
20樓:匿名使用者
使用泛型之後,集合類取資料時就不需要對儲存的資料進行強制型別轉換。
也避免了一些異常的出現。
例如listlist=new arraylist();
list.add("123");
string str=list.get(0);
如果不適用泛型就是這樣。
list list=new arraylist();
list.add(123);
string str=(string)list.get(0);
如果這樣就會出現型別轉換的異常。
java.lang.integer cannot be cast to java.lang.string
泛型的作用是什麼,java中泛型是什麼意思,作用是什麼?
它有什麼優勢?它對效能有影響嗎?它在執行時的行為是什麼?bcl中有哪些泛型型別?舉例說明平時程式設計中您定義的泛型型別。泛型的作用在於 演算法的重用 這點其實很好理解,原來的arraylist只能接受object,現在通過list可以接受任何型別,也就是說arraylist的方法都被各個型別重用了。...
c泛型和java泛型的區別,java泛型類和泛型方法的區別
泛型技術在c 和java之中的使用方式看似相同,但實現上卻有著根本性的分歧,c 裡面泛型無論在程式原始碼中 編譯後的il中 intermediate language,中間語言,這時候泛型是一個佔位符 或是執行期的clr中都是切實存在的,list與list就是兩個不同的型別,它們在系統執行期生成,有...
泛型和泛型集合的區別,java集合和泛型集合的區別?
其實不應該說是兩者的區別的,他們是一個包含的關係!在物件導向程式設計中有一個術語,叫泛化,而這個泛型的 正是 於這裡!所謂的泛型就是指的儲存的是其父型別,而實現使用時宣告好子型別而已。不管是在java還是c 中,所有的型別都是基於object這個基礎型別的。可以認為所有的其他型別都是object的泛...