注意点:

alt alt

alt

alt

泛型方法(可以是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);

有限制条件的通配符

alt