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.在整個類中只有一處使用了泛型,使用時注意加了泛型了參數不能調用與參數類型有關的方法比如“+”,比如打印出任意參數化類型集合中的所有內容,就適合用通配符泛型<?>
public static void printCollecton(Collection <?> collection)
{
for(Object obj: collection)
{
System.out.println(obj);
}
}
2. 當一個類型變臉用來表達兩個參數之間或者參數與返回值之間的關係時,即統一各類型變量在方法簽名的兩處被使用,或者類型變量在方法體代碼中也被使用而不僅 僅在簽名的時候使用,這是應該用自定義泛型<T>。泛型方可以調用一些時間類型的方法。比如集合的add方法。
public static <T> T autoConvertType(T obj)
{
return(T)obj;
}
|