為什麼很多人吐槽java泛型,對java泛型的作用還是不太理解?

2021-03-19 18:18:55 字數 4014 閱讀 5858

1樓:

舉個例子來說

你的錢包裡你規定只裝錢

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

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

那麼你取出來的東西就不一定是錢,這樣你就要轉換了,那要是石頭的話你要轉換成錢就錯了(不確定裡面到底是什麼)

(--) kg/hm,也可以施用磷酸二銨~ kg/hm尿素 kg/

對java泛型的作用還是不太理解?

2樓:幽冥神者

很多時候,尤其在使用物件的多型性的時候,你不知道進到你資料結構中的物件到底是什麼型別的,執行的時候就會出問題。泛型就是限定一個資料結構,或者一個方法引數只允許傳入什麼型別的物件。

比如類a,類b,類c,b和c繼承a。b中有屬性abc,c中有屬性def

定義一個沒有泛型的list,這時候你可以隨便往裡存,但從list往外取的時候(假設取出的物件叫obj),你要呼叫abc就要先轉型,這時候c的物件會異常

3樓:匿名使用者

簡單說吧,你自己向list裡面放資料,先放a,再放b,又放c,ok,等你下次再呼叫的時候還回記得裡面的資料是什麼嗎,怎麼排序的,強轉會成功嗎?或者別人用你的資料,難道要跑過來問你嗎?所以,用泛型約束型別,這樣大家都一清二楚,我這個list只能放a,你得到永遠都是a

4樓:劉傑

我感覺就是你以後可能用到的值的型別不確定。

為什麼要用java泛型

5樓:育知同創教育

從上面的內容中,大家已經明白了泛型的具體運作過程。也知道了介面、類和方法也都可以使用泛型去定義,以及相應的使用。是的,在具體使用時,可以分為泛型介面、泛型類和泛型方法。

自定義泛型介面、泛型類和泛型方法與上述java原始碼中的list、arraylist類似。如下,我們看一個最簡單的泛型類和方法定義:

1 public class generictest 8  9 }10 11 class box18 19     public box(t data) 22 23     public t getdata() 26 27 }

在泛型介面、泛型類和泛型方法的定義過程中,我們常見的如t、e、k、v等形式的引數常用於表示泛型形參,由於接收來自外部使用時候傳入的型別實參。那麼對於不同傳入的型別實參,生成的相應物件例項的型別是不是一樣的呢?

1 public class generictest 13 14 }

由此,我們發現,在使用泛型類時,雖然傳入了不同的泛型實參,但並沒有真正意義上生成不同的型別,傳入不同泛型實參的泛型類在記憶體上只有一個,即還是原來的最基本的型別(本例項中為box),當然,在邏輯上我們可以理解成多個不同的泛型型別。

究其原因,在於java中的泛型這一概念提出的目的,導致其只是作用於**編譯階段,在編譯過程中,對於正確檢驗泛型結果後,會將泛型的相關資訊擦出,也就是說,成功編譯過後的class檔案中是不包含任何泛型資訊的。泛型資訊不會進入到執行時階段。

對此總結成一句話:泛型型別在邏輯上看以看成是多個不同的型別,實際上都是相同的基本型別。

java裡泛型有什麼作用?我怎麼覺得那個可寫可不寫

6樓:匿名使用者

舉個例子來說

你的錢包裡你規定只裝錢

那麼你去出來的想

也不想就是錢,管他是¥還是$不用轉換的-->都是錢(確定裡面是什麼)不用泛型的話 就不規定放什麼

那麼你取出來的東西就不一定是錢,這樣你就要轉換了,那要是石頭的話你要轉換成錢就錯了(不確定裡面到底是什麼)

7樓:匿名使用者

很多時候,尤其在使用物件的多型性的時候,你不知道進到你資料結構中的物件到底是什麼型別的,執行的時候就會出問題。泛型就是限定一個資料結構,或者一個方法引數只允許傳入什麼型別的物件。

比如類a,類b,類c,b和c繼承a。b中有屬性abc,c中有屬性def

定義一個沒有泛型的list,這時候你可以隨便往裡存,但從list往外取的時候(假設取出的物件叫obj),你要呼叫abc就要先轉型,這時候c的物件會異常……

沒事多看看教程,多敲敲**,基本上練著練著也就會了,有一套動力節點301集java基礎教程裡面講的很有趣也講得很細緻明瞭,建議你去看看。

8樓:匿名使用者

泛型賦予了型別引數式多型

的能力泛型的第一個好處是編譯時的嚴格型別檢查。有效的避免了執行期的classcastexception,提高了程式的安全性和健壯性。

這是集合框架最重要的特點。此外,泛型消除了絕大多數的型別轉換。如果沒有泛型,當你使用集合框架時,你不得不進行型別轉換。

另外 泛型簡化了**,應用泛型的程式提高程式的可讀性,更利於團隊的合作開發。

9樓:百度使用者

首先你要明白:

他給出的這個泛型,不是無意義的.

如果定義容器了list,如果你不定義他的泛型,那麼他可以放不同型別的東西.

比如你定義了一個list,這樣的話

他只可以存放整型的資料,一旦你想要放其他的型別的資料,他會包錯.

所以這個泛型的目的就是是定義的容器所放的內容是一個統一的型別.

10樓:匿名使用者

knightzhuwei 說的很正確 貌似也沒什麼好補充的。。。

簡單點說 物件導向設計的最重要的目的之一 就是管理 泛型是管理中的一個比較常見的方法 假設

a,b繼承了c 而d裡面有個方法getc(c c) 那麼 你想往這裡傳除c和他的子類之外其他引數的時候 必然是傳不進去的 有效的提高了安全性 更明確了該方法的目的 這樣就明白了吧?

11樓:匿名使用者

在用集合類的時候

不用泛型我就不舒服……

12樓:匿名使用者

泛型是java jdk1.5出的新功能。它主要是對同一種型別做的集合,有很多人說他不好用,但是sun既然提供了他就是讓我們來用的,這樣可以少些很多**。

13樓:匿名使用者

java中為什麼使用泛型,使用泛型的優點?

14樓:匿名使用者

泛型(generic type 或者generics)是對 java 語言的型別系統的一種擴充套件,以支援建立可以按型別進行參

數化的類。可以把型別引數看作是使用引數化型別時指定的型別的一個佔位符,就像方法的形式引數是執行時傳遞的值的佔位符一樣。

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

java裡面使用泛型的優點

15樓:匿名使用者

使用泛型之後,集合類取資料時就不需要對儲存的資料進行強制型別轉換。

也避免了一些異常的出現。

例如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

16樓:匿名使用者

由於集合裡面能放各種各樣資料格式的資料, 使用泛型之後能限制放入的資料型別, 從而起到一定的控制作用!!!

17樓:永遠不知終點

我覺得主要是有兩點,第一點是用泛型寫**比較容易,第二點是其型別比較安全。希望對你有所幫助。

為什麼太多的人愛無病呻吟,為什麼很多人吐槽電影《大魚海棠》?

或許一種本能的孤單吧 覺得事事都如排山倒海一樣 有時候有些人會覺得自己被這個世界排擠了 他們會本能的去逃避 也或者是覺得無聊 覺得累了 卻找不到理由停下來 難免會唉聲嘆氣 無病呻吟了 只要你樂觀一點 對著自己說要開心 我相信這個世界還是很刺激的 加油 太娘們了!矯情!不應該是個爺們的形象!人活著就要...

為什麼很多人對留學生有偏見,為什麼很多人對職業學校的學生總是偏見

我覺得要看說話的人是誰,如果是老人的話,可能是因為他們還是覺得中國是最好的,覺得外國是不是很好。如果是年輕人 同學這類的 可能因為他們嫉妒這個女孩能去國外上學而他們只能在國內上學。但我的這想法不一定是對的,呵呵,如果是我在那個女孩的位置可能我會這麼想。p 我手心的溫度漸漸在離開 林子大了什麼鳥都有 ...

為什麼很多人喜歡,為什麼很多人喜歡EXO

首先是外部因素 exo的經紀公司是sm 亞洲造型工廠,無論是外形包裝,還是出道陣型都比其他公司高一等級。exo的隊伍形式新穎創新,將組合一分為二,一出道就同時攻打中韓兩地市場,合體與分隊的各種 玩法也是吸引大眾眼球的因素。exo的定位很符合現代人對偶像的需求,一個團隊裡就分有很多分擔,像門面,舞蹈,...