一、泛型
可以用、、extends user>等進行泛型的宣告。其中extends user>的宣告方式限定了t的範圍,t只能為 user的子類。
1.引數型別用在類的建立中,泛型類。
2.引數型別用在介面的建立中,泛型介面。
3.引數型別用在方法的建立中,泛型方法。注意泛型的宣告位置,在方法的修飾符之後,返回值型別之前。
二、? 型別萬用字元
萬用字元的幾種形式:
1.無限定萬用字元,<?>。
2.上限萬用字元,<? extends user>。表示引數型別只能是user的子類。
3.下限萬用字元,<? super user>。表示引數型別只能是user的父類。
public class p
//萬用字元
//設定指定型別的範圍,超過範圍就會報錯
//extends : 指定範圍必須是其(這裡是list)子類
public void set(p<? extends list> list)
//super : 指定型別必須是其(這裡是list)父類
public void setsuper(p<? super list> list)
public static void main(string args)
}class user
//乙個類可以同時指定多個泛型
class person
}泛型的宣告表明,在類、介面、方法的建立中,要使用乙個未知的資料型別。它可以是integer型別,也可以是string型別。就把它的型別定義成 t 、s 或者是n等等。
在例項化的時候,就必須宣告t具體是乙個什麼型別。
在定義泛型物件的使用方法時,還不知道t是什麼型別,它可能是string型別,也可能是integer型別。如果,把t定義成乙個確定的泛型資料型別,引數就只能是這種資料型別。此時,就用到了萬用字元代替確定的泛型資料型別。
使用泛型、萬用字元提高了**的復用性。
把乙個物件分為宣告、使用兩部分的話。泛型側重於型別的宣告上**復用,萬用字元則側重於使用上的**復用。泛型用於定義內部資料型別的不確定性,萬用字元則用於定義使用的物件型別不確定性。
泛型的使用與萬用字元
把元素的型別設計成乙個引數,這個引數型別叫做泛型。arraylistlist new arraylist 舉例 public class generictest system.out.println 方式二 iterator iterator list.iterator while iterator...
泛型萬用字元 與 有限制的泛型萬用字元
一 泛型萬用字元 子父類關係 list list1 newarraylist list list2 newarraylist list1 list2 編譯錯誤 list list null list list1 list list2 結論 讀寫問題 collection c newarraylist...
泛型(萬用字元)
1 宣告好泛型型別之後,集合中只能存放特定型別元素 2 泛型型別必須是引用型別 3 使用泛型後取出元素不需要型別轉換.泛型函式 當函式中使用了乙個不明確的資料型別,那麼在函式上就可以進行泛型的定義。public 泛型的宣告 返回值型別 函式名 泛型 變數名 泛型類 修飾符 class 類名 泛型 泛...