List<? super T>和List<? extends T>问题

   public static void main(String[] args) {
//      super下界,适合存元素
        List<? super Number> superList = new ArrayList<Number>();//表示类型必须是Number或者Number的超类
        Integer a =10;
        superList.add(a);//为什么可以放子类而不能放父类??

        Object o ="2343";
//        superList.add(o);  报错,只能存放Number及其子类对象

        Number s  = (Number)superList.get(0);//取元素需要强转??
        Object ob =superList.get(0);//Object就可以直接接
        System.out.println(s);


//      extends上界,适合取元素
        List<? extends Number> extendList = new ArrayList<>();

//        extendList.add(10);直接add会报错,因为extendList只是一个容器会放Number类型或者其子类,放进去并没有标识具体类型,只是一个占位符,此处编译不通过

        List<Integer>  list1=new ArrayList<>();
        list1.add(1);
        extendList = list1;//可以这样赋值,初始化,相当于把一个容器的东西直接倒入另一个容器


        List<Object> objs=new ArrayList<>();
        objs.add("23");
//        extendList = objs;  Object是Number的父类,会编译不通过

        Number num = extendList.get(0);//
        Object num1 = extendList.get(0);
//        Integer num2 = extendList.get(0);  只能用Number类或者其父类接,因为不确定其具体的类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值