注意点:
泛型方法(可以是static方法),因为泛型参数是在调用方法时确定的。并非在实例化类时确定。
public class Yep {
//定义一个泛型方法,集合的复制
public (static) <S> List<S> ArrayCopy(S[] arr){
ArrayList<S> list = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
list.add(arr[i]);
}
return list;
}
public static void main(String[] args) {
Yep yep = new Yep();
Double[] arr = {1.0,2.0,3.0,4.0};
List<Double> list = yep.ArrayCopy(arr);
for (Double value : list) {
System.out.println(value);
}
}
}
通配符(只读)
类A是类B的父类,G<A>和G<B>是没有关系的,二者是同辈,二者共同的父类是G<?>
List<?> list = null;
List<String> list2 = new ArrayList<>();
list2.add("AA");
//可以把list2赋值给list;但是之后对于List<?> list 再也不能向其内部添加任何非null数据。
list = list2;
//list.add("VV"); 编译不通过
list.add(null); //可以,但是毫无意义
//获取(读取):允许读取数据,读取的数据类型为Object
Object o = list.get(0);
sout(o);
有限制条件的通配符