1. 程式人生 > >java泛型中<?>和<T>區別

java泛型中<?>和<T>區別

類型 父類 定義 ext 方法 oid tor 接收 通配符

public static void printColl(ArrayList<?> al){
Iterator<?> it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next().toString());
}
?和T都表示不確定的類型 但如果是T的話 函數裏面可以對T進行操作 比如while裏面可以這樣寫
T t = it.next();
System.out.println(t);

T自定義泛型和?通配符泛型。

泛型三種:
[1]ArrayList<T> al=new ArrayList<T>();指定集合元素只能是T類型
[2]ArrayList<?> al=new ArrayList<?>();集合元素可以是任意類型,這種沒有意義,一般是方法中,只是為了說明用法
[3]ArrayList<? extends E> al=new ArrayList<? extends E>();
泛型的限定:
? extends E:接收E類型或者E的子類型。
?super E:接收E類型或者E的父類型。

java泛型中<?>和<T>區別