1、泛型的菱形语法
Apple<String> app = new Apple<>("xxbb");
2、定义泛型接口、类 使用形参
public class Apple<T> { private T info; public Apple(){} public Apple(T info) { this.info = info; } public void setInfo(T info) { this.info = info; } public T getInfo() { return this.info; } public static void main(String[] args) { Apple<String> app = new Apple<>("xxbb"); System.out.println(app.getInfo()); Apple<Double> appInt = new Apple<>(4.4); System.out.println(appInt.getInfo()); } }
3、从泛型类派生子类
使用这些接口和父类时,不能包含类型形参。
public class A extends Apple<String>
4、泛型的设计原则是,代码编译时没有出现告警,就不会遇到运行时ClassCastException
5、类型通配符
List<?>
设定类型通配符的上限
List<? extends xxx> list后的类型是xxx的子类型就可以
设定形参上限
List<T extends Number & java.io.Serializable>
6、泛型方法
static <T> void test(T[] a, Collection<T>c)