Integer[] a = new Integer[5];
Number[] b = a;
Number[] b = a;
b[0] = 0.5;
因为Integer 是Number的子类 所以编译不会报错,但是第三行会报错ArrayStoreException
泛型中为了避免这种情况
List<Integer> aList = new ArrayList<>();
List<Number> aNumbers = aList;
直接编译报错
List<?> 则可以表示通用父类
List<? extends Number> 这种为限制的泛型通配符
List<Integer> aList = new ArrayList<>();
List<? extends Number> list = aList;
这种情况下不会编译报错
可以将List<? extends Number> list 当做方法的参数,就可以为此方法传入泛型为Number子类的List
泛型方法
修饰符 <T,S> 返回值类型 方法名 (参数列表){}