泛型三,通配符

泛型,通配符

泛型通配符:

  • ?代表任意的数据类型
    使用方式:
  • 不能创建对象时使用 ,如:ArrayList<?> list03=new ArrayList<?>();
  • 只能作为方法参数使用,如:public static void printarray(ArrayList<?> list)

代码:

public class Generictongpei {
public static void main(String[] args) {
    ArrayList<String> list01=new ArrayList<>();
    list01.add("乔峰");
    list01.add("段誉");
    list01.add("虚竹");


    ArrayList<Integer> list02=new ArrayList<>();
    list02.add(26);
    list02.add(18);
    list02.add(22);
    //ArrayList<?> list03=new ArrayList<?>();
    printarray(list01);
    printarray(list02);
}
public static void printarray(ArrayList<?> list)
{
    Iterator<?> it = list.iterator();//迭代器也是用<?>代表数据类型
    while (it.hasNext())
    {
        Object o = it.next();//由于不知道什么类型的,使用object类使用
        System.out.println(o);
    }
/*乔峰
段誉
虚竹
26
18
22*/
}
}

通配符的上界,下界

型的上限与下限

  • 上限的限定:? extends E,代表使用的泛型只能是E类型的子类或者本生
  • 下限的限定 : ? super E ,代表使用的泛型只能是E类型的父类或者本生

代码:

public class GenerictongpeiUpDown {
public static void main(String[] args) {
    Collection<Integer> list01=new ArrayList<>();
    Collection<String> list02=new ArrayList<>();
    Collection<Number> list03=new ArrayList<>();
    Collection<Object> list04=new ArrayList<>();

    //integer extends number extends object.
    getElement1(list01);
   // getElement1(list02);没有任何继承关系
    getElement1(list03);
    //getElement1(list04);突破了界限,在number之外,number的父类
    //getElement2(list01);是number的子类,在下限之下
    //getElement2(list02);//没有任何继承=关系
    getElement2(list03);
    getElement2(list04);


}

public static void getElement1(Collection<? extends Number> coll) {

}
public static void getElement2(Collection<? super Number> coll) {

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值