1)
Gen.java
public class Gen<T> {
private T obj;
public T getObj() {
return obj;
}
public void setObj(T obj) {
this.obj = obj;
}
public String showType() {
return this.obj.getClass().getName();
}
}
Test.java
public class Test {
public static void main(String[] args) {
Gen<Integer> gen1 = new Gen<Integer>();
gen1.setObj(11);
System.out.println(gen1.showType());
Gen<String> gen2 = new Gen<String>();
gen2.setObj("aaaaaaaaaaaa");
System.out.println(gen2.showType());
}
}
2) 限制泛型
public class Gen2<T extends Collection> {
private T obj;
public T getObj() {
return obj;
}
public void setObj(T obj) {
this.obj = obj;
}
public static void main(String[] args) {
Gen2<ArrayList> gen = new Gen2<ArrayList>();
gen.setObj(new ArrayList());
// Gen2<String> gen = new Gen2<String>();
}
}
3) 通配符泛型
4) 泛型方法
public class Gen3 {
public <T> void showType(T t) {
System.out.println(t.getClass().getName());
}
public static void main(String[] args) {
Gen3 g = new Gen3();
g.showType("");
g.showType(new ArrayList());
}
}