Java泛型的协变和逆变和可变参数列表

类型通配符

//类型通配符上限:<? extends 类型>  其实上限就是自己是上限  表示的是 自己和子类可以用
//List<? extends Number> 它表示的类型是Number或者其子类型

//类型通配符下线: <? super 类型>   其实下限就是自己以及父类 表示的是 自己和父类可以使用
// List<? super Number>:它表示的类型是Number或者其父类型
public static void main(String[] args) {
    //类型通配符 没有上限下限的区别
List<?> list1=new ArrayList<Object>();
List<?> list2=new ArrayList<Number>();//Number继承object
List<?>list3=new ArrayList<Integer>();//Integer继承Number
    System.out.println("---------------------------");
    //类型通配符上限:<? extends 类型>  extends后面跟什么类型 就是以什么类型为上限
    List<? extends Number> list5=new ArrayList<Object>();
   List<? extends Number> list6=new ArrayList<Number>();
   List<? extends Number> list7=new ArrayList<Integer>();
    //类型通配符下限:<? super 类型> super后面跟什么类型 就是以什么类型为下限
    List<? super Number> list8=new ArrayList<Object>();
    List<? super Number> list9=new ArrayList<Number>();
    List<? super Number> list10=new ArrayList<Integer>();
}

可变参数列表

public static void main(String[] args) {
    System.out.println(sum(1,2,3,4));
    System.out.println(sum("1",23,45,5));
}
public static int sum(int...a){//a是一个数组
    int sum=0;
    for(int i:a){
        sum+=i;
    }
    return sum;
}
//
public static int sum(String b,int...a){//如果有其他类型 可变参数列表必须放在最后面
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Da_Bao_zi/article/details/121549853