自定义泛型
第一种形式
import java.util.*; //限制了T必须是List或者它的子类型,不要用implements关键字 class MyGenerics<T extends List>{//将来在擦除T的时候,必须是List或其子类型 private T field; public void setField(T f){ this.field = f; //获得f的类型 System.out.println(f.getClass()); } public T getField(){ return this.field; } public static void main(String uu[]){ MyGenerics<List> mm1 = new MyGenerics<List>(); MyGenerics<ArrayList> mm2 = new MyGenerics<ArrayList>(); //MyGenerics<Map> mm3 = new MyGenerics<Map>(); //error,因为Map不是List或者它的子类 } }
第二种形式
class MyGenerics01<T>{ private T field; public void setField(T f){ this.field = f; //获得f的类型 System.out.println(f.getClass()); } public T getField(){ return this.field; } public static void main(String uu[]){ MyGenerics01<Integer> mm1 = new MyGenerics01<Integer>(); mm1.setField(1); } }