首頁 >Java >Java入門 >java泛型中T和?的區別

java泛型中T和?的區別

王林
王林原創
2020-01-15 16:28:175943瀏覽

java泛型中T和?的區別

T 代表一種型別。

加在類別上:

class SuperClass<A>{}

加在方法上:

public <T>void fromArrayToCollection(T[] a, Collection<T> c){}

(免費學習影片教學分享:java影片教學

方法上的8742468051c85b06f0a0af9e3e506b5c代表括號裡面要用到泛型參數,若類別中傳了泛型,此處可以不傳,調用類型上面的泛型參數,前提是方法中使用的泛型與類別中傳來的泛型一致。

class People<T>{
public void show(T a) {
   }
}

T extends T2 指傳的參數為T2或T2的子型別。

?是通配符,泛指所有型別。

一般用來定義一個引用變數,這麼做的好處是,如下所示,定義一個sup的引用變量,就可以指向多個物件。

SuperClass<?> sup = new SuperClass<String>("lisi");
sup = new SuperClass<People>(new People());
sup = new SuperClass<Animal>(new Animal());

若不用?,用固定的類型的話,則:

SuperClass<String> sup1 = new SuperClass<String>("lisi");
SuperClass<People> sup2 = new SuperClass<People>("lisi");
SuperClass<Animal> sup3 = new SuperClass<Animal>("lisi");

這就是?通配符的好處。

相關文章教學推薦:java入門教學

#

以上是java泛型中T和?的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn