Java編程中<Object>對象類型<T>泛型<?>通配類型區別傻傻分不清楚

喜歡學習研究的同學可能發現別人的代碼中,有的時候使用返回Object,有的使用

泛型,如果使用泛型的代碼裡可能還會出現>這樣的符號,憑著好幾年前上學的記憶大致能理解為Object是所有類型的父類,能代表所有類型,泛型是不限制類型也可以代表所有類型,那這個時候就懵逼了,我今天就說明白他們的區別。

Object

Object在Java是大佬級別的存在,一切皆對象,都是源於Object,所以Object可以承載任何對象,例如Object就是世界,但是他到底是人還是鬼,只有運行的時候才能知道。所以一旦出現強制轉換的錯誤在編譯時是沒辦法檢查出來的。

泛型

跟他的名字一樣,泛泛的類型,在聲明定義的時候聲明泛型,使用時指定具體的類型,這樣在編譯時就可以檢查類型轉換錯誤了,例如List這個類,他就聲明瞭一個泛型,在使用時我們必須指定明確的類型List<string>,這樣就明確了集合裡面是什麼類型的東西,方便代碼的檢查,和轉換安全。/<string>

>通配符

如果使用泛型,在內部你還不知道這個泛型是什麼類型,但需要限制一下它,那就可以使用>來表示他,例如:限制它是Number的子類就用List extends Number>,它是Number的父類就用List extends Number>。

案例加深印象

我們先聲明兩個方法,一個使用Object,一個使用泛型,我們感受一下區別:


Java編程中<Object>對象類型<T>泛型<?>通配類型區別傻傻分不清楚

首先這兩個方法都可以接收任何類型的對象,也可以返回任何的對象,但是使用中就會出現區別,例如:


Java編程中<Object>對象類型<T>泛型<?>通配類型區別傻傻分不清楚


分享到:


相關文章: