首页 > 编程语言 > 详细

Java 泛型中的<? super T>和<? extends T>

时间:2015-03-22 17:53:00      阅读:263      评论:0      收藏:0      [点我收藏+]

 

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>(); //错误

    }

 

Java 泛型中的<? super T>和<? extends T>

原文:http://www.cnblogs.com/zhangminjie/p/4357531.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!