泛型
1. 泛型类,泛型方法
1.1 方法先定义后使用
class ObjectTool<T>{ private T obj; public T getObj() { return obj; } public void setObj(T obj) { this.obj = obj; } public <E> void show(E t){ System.out.println(t); } }
2.继承
interface Inter<T>{ abstract void show(); }
2.1 子类明确类型
class InterImpl implements Inter<String>{ @Override public void show(String s) { System.out.println(s); } }
2.2 子类不明确类型
class InterImpl2<T> implements Inter<T> { @Override public void show(T t) { System.out.println(t); } }
3.通配符 ?
public void forEach(List<?> list){ for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } }
3.1 通配符上限(我实例化的对象类型最高就是你,要不就是你的儿子)
public void forEach(List<? extends Number> list){ for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } }
3.2 通配符下限(我实例化的对象类型最低就是你,反正就是你爸)
public void forEach(List<? super Type> list){ for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } }