Java 泛型 lt;super T>中 super 怎么 理解?与 extends 有何不同
发布网友
发布时间:2022-05-11 00:33
我来回答
共2个回答
热心网友
时间:2023-11-19 10:19
例如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>
热心网友
时间:2023-11-19 10:19
super 是表示父类的意思,好像用在构造函数,调用父函数。
还有,就是泛型 表示 参数的 上限, 就自能是它,和其子类。