1. 程式人生 > >Java中的Object、T(泛型)、?區別

Java中的Object、T(泛型)、?區別

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

個人理解
object 即自然數而T代表自然數n(任意一個確定的自然數),?則是任意一個自然數

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