※基本
public static void main(String[] args) { new Test().<String>xxx(""); new Test().xxx(""); } private <T> void xxx(T t) {} private <T extends Xxx, U extends String, V extends Animal &Ooo & Oooo> void xxx(T t, U u, V v) {}
※宣告時,寫在回傳值的左邊,而T是隨便打的,反正就是一個型態,型態是什麼由呼叫者決定
※宣告後可以不用,不會出現錯誤或警告,此例使用在參數
※可以在呼叫方法的左邊寫泛型,可以確定是什麼型態,但不寫也不會出現錯誤或警告
※&只能寫在泛型類別和泛型方法,像 List 是不行的
在 & 的右邊只能放 interface,這句話表示 V 必需是 Animal 的子類且還需 implements Ooo 和 Oooo 兩個 interface
.「,」隔開每一個自定的泛型名稱,不能重覆用,如 第一個已經用 T 了,後面就不能用 T 了
※集合
public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); new Test().<Integer>xxx(list); new Test().xxx(list); } private <T> void xxx(List<T> t) { for(T tt:t) { System.out.println(tt); } }
※呼叫時的泛型寫的不是 List,而是 List 裡的型態,因為泛型方法的參數 T 在 List 裡,也就是說它只管泛型的部分
沒有留言:
張貼留言