Java 泛型 lt;super T>中 super 怎么 理解?与 extends 有何不同

 我来答
百度网友9258cc47a
推荐于2016-10-28
知道答主
回答量:26
采纳率:66%
帮助的人:11.2万
展开全部

例如public static <T> void add(List<T> l1,List<? super T> l2){
   //那么l2中的元素就只能是泛型T的父类
   //例如l1的类型是List<String>
   //那么l2中的元素就可以是List<Object>
   //因为Object类是String的父类,可以不一定是直接父类,也可能是父类的父类
   //而l2就不能设定为List<Integer>,因为Integer不是String的父类。与String没有继承 关系
   
   
}

如果该方法是public static <T> void add(List<T> l1,List<? super T> l2){

    //那么List<> ,中括号里面指定的元素就只能是T的子类型,与super刚好相反

}


当然,<? super T>和<? extends T>都能指定与T相同的类型,例如两种情况都可以指定l1和l2都为List<String>


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式