zoukankan      html  css  js  c++  java
  • Java 泛型中的<? super T>和<? extends T>

    super 要求 ? 必须是 T 的超类或者自身

    extends 要求 ? 必须是T的子类或者自身

        /**
         *  <? super T>
         *  super 要求 ? 必须是 T 的超类或者自身
         * Super
         */
        @Test
        public void testSuper() {
            //ArrayList泛型为String,符合<? super String>的要求,String和String本身是相同的类型
            List<? super String> ts = new ArrayList<String>();//正确
    
            //ArrayList的泛型是Object,Object是所有类的父类,符合<? super T>的要求
            List<? super String> objects = new ArrayList<Object>();//正确
    
    
            //ArrayList的泛型是String,String和Integer没啥关系,不符合要求
            //List<? super Integer> strings = new ArrayList<String>();//错误
    
            //ArrayList的泛型是String,String是Object的子类,不符合要求
            //List<? super Object> strings = new ArrayList<String>();//错误
            
    
        }
        /**
         * <? extends T>
         *     extends 要求 ? 必须是T的子类或者自身
         */
        public void testExtends(){
            //ArrayList的泛型是String,String是Object的子类,符合<? extends T>的要求
            List<? extends Object> strings = new ArrayList<String>(); //ArrayList的泛型是Object,Object是String的父类,不符合<? extends T>的要求
            //List<? extends String> objects = new ArrayList<Object>(); //错误
    
        }
  • 相关阅读:
    js中“==”与“===”区别
    java中的除法及求余运算特殊性。
    oracle数据库查询历史某一时刻的表数据
    Java多线程总结(转载)
    I/O之Writer-Reader
    I/O之File
    MYSQL之內链接 左链接 右链接 区别
    ubuntu下编译boost
    linux下编译安装boost库
    搭建无线弱网测试环境
  • 原文地址:https://www.cnblogs.com/zhangminjie/p/4357531.html
Copyright © 2011-2022 走看看