Object T(以下代指泛型) 的區別

2022-09-16 01:06:10 字數 2265 閱讀 9933

我們先來試著理解一下object類,學習j**a的應該都知道object是所有類的父類,注意:那麼這就意味著它的範圍非常廣!首先記住這點,如果你的引數型別時object,那麼的引數型別將非常廣!

《thinking in j**a》中說很多原因促成了泛型的出現,最引人注目的乙個原因就是為了創造容器類。這個要怎麼來理解呢?我的理解是,可以拋開這個為了創造容器類這個,而是回到泛型的目的是限定某種型別上來。

所以我們現在能小結一下object和t很重要的兩點區別就是:

object範圍非常廣,而t從一開始就會限定這個型別(包括它可以限定型別為object)。

object由於它是所有類的父類,所以會強制型別轉換,而t從一開始在編碼時(注意是在寫**時)就限定了某種具體型別,所以它不用強制型別轉換。(之所以要強調在寫**時是因為泛型在虛擬機器中會被jvm擦除掉它的具體型別資訊,這點可參考泛型,在這裡不做引申)。

比如在jdk中的list類是個泛型類。現在我們制定它的型別是object。

listlist = new arraylist();

int i = 0;

string s = "s";

list.add(i);

list.add(s);

list本身是個泛型類,現在我們指定它接收object型別的引數,此時就可以放置任意型別的引數進去,而在取出來是就必須得進行強制型別轉換成具體的型別。

現在我們如果將list指定接收string型別的引數,那麼這個list就只能放置string型別,且取出來時就不用進行強制型別轉換。

這點給我們帶來的啟示是,在編寫類似list類的時候,一定要注意是否用泛型。一定要多寫幾個泛型類,多討論多理解,不然還是可能會攪在一起。

接著是?,這個可能在用到反射需要獲取class型別時用到,它的解釋就是:接收乙個不確定的型別,有點和object一樣。我對它乙個理解是,如果只用"?"那麼它和object是一樣的,但是"?"有比object稍微「高階」有點的用法,就是它能縮小乙個不確定的範圍,利用類似"? extends test",這就意味著只接收接收test類的繼承類,是不是比object的範圍縮小了?

以上就是object、t、?的區別。多寫幾行**,多做試驗,多討論,就知道在何時何地恰當的使用了。

我們先來試著理解一下object類,學習j**a的應該都知道object是所有類的父類,注意:那麼這就意味著它的範圍非常廣!首先記住這點,如果你的引數型別時object,那麼的引數型別將非常廣!

《thinking in j**a》中說很多原因促成了泛型的出現,最引人注目的乙個原因就是為了創造容器類。這個要怎麼來理解呢?我的理解是,可以拋開這個為了創造容器類這個,而是回到泛型的目的是限定某種型別上來。

所以我們現在能小結一下object和t很重要的兩點區別就是:

object範圍非常廣,而t從一開始就會限定這個型別(包括它可以限定型別為object)。

object由於它是所有類的父類,所以會強制型別轉換,而t從一開始在編碼時(注意是在寫**時)就限定了某種具體型別,所以它不用強制型別轉換。(之所以要強調在寫**時是因為泛型在虛擬機器中會被jvm擦除掉它的具體型別資訊,這點可參考泛型,在這裡不做引申)。

比如在jdk中的list類是個泛型類。現在我們制定它的型別是object。

listlist = new arraylist();

int i = 0;

string s = "s";

list.add(i);

list.add(s);

list本身是個泛型類,現在我們指定它接收object型別的引數,此時就可以放置任意型別的引數進去,而在取出來是就必須得進行強制型別轉換成具體的型別。

現在我們如果將list指定接收string型別的引數,那麼這個list就只能放置string型別,且取出來時就不用進行強制型別轉換。

這點給我們帶來的啟示是,在編寫類似list類的時候,一定要注意是否用泛型。一定要多寫幾個泛型類,多討論多理解,不然還是可能會攪在一起。

接著是?,這個可能在用到反射需要獲取class型別時用到,它的解釋就是:接收乙個不確定的型別,有點和object一樣。我對它乙個理解是,如果只用"?"那麼它和object是一樣的,但是"?"有比object稍微「高階」有點的用法,就是它能縮小乙個不確定的範圍,利用類似"? extends test",這就意味著只接收接收test類的繼承類,是不是比object的範圍縮小了?

以上就是object、t、?的區別。多寫幾行**,多做試驗,多討論,就知道在何時何地恰當的使用了。

生存以上 生活以下

我,作為乙個理想主義者,從來都是從最理想的角度看生活 看世界,我覺得很多事情是順其自然的,不言而喻的 知識分子不應該為物質生活所累 人應該有所追求,應該去追求高尚 我們努力就會有回報,世界是公平的.雖然身邊的人一天天變得世俗和犬儒,但是至少我還堅持去追求自己覺得正確的事,不向世俗低頭。我發現小時候和...

25歲以下男人必讀

1.男人是社會的主體,不管你信或不信。所以男人應該有種責任感。2.25歲之前,請記得,愛情通常是假的,或者不是你所想象的那樣純潔和永遠。如果你過了25歲,那麼你應該懂得這個道理。3.吃飯7成飽最舒服。對待女友最多也請你保持在7成。4.30歲之前請愛惜自己的身體,前30年你找病,後30年病找你。如果你...

ArrayUtils 擁有以下方法

arrayutils 擁有以下方法 tostring 將乙個陣列轉換成string,用於列印陣列 isequals 判斷兩個陣列是否相等,採用equalsbuilder進行判斷 tomap 將乙個陣列轉換成map,如果陣列裡是entry則其key與value就是新map的key和value,如果是o...