如何理解 Java 中的 lt;T extends Comparable<
答案:3 悬赏:0 手机版
解决时间 2021-04-08 00:26
- 提问者网友:美人性情
- 2021-04-07 14:54
如何理解 Java 中的 lt;T extends Comparable<
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-04-07 15:16
例如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>
//那么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>
全部回答
- 1楼网友:鱼忧
- 2021-04-07 16:15
如果题干的意思是指理解<T extends Comparable>的话。
T、E、K等一般都涉及泛型的概念。
泛型通俗地说,就是在方法或者类中使用一些变量时,泛化变量的类型,即指定该变量是某一类类型,而不是某一个类型。这里的某一类类型可以具体指定,也可以直接代指,后者的变量类型范围更广。
具体指定就类似题干,指定范围中T这一类型必须继承在Comparable.
而直接代指,就是不指定T是什么类型或属于什么类型。只有在实例化该类型时才具体指定某一个类型。
比如Map<K, V>。在Map代码中可以用K或者V去声明变量,这些变量的类型只有在实例化时才确定。比如Map<String,String> map=new HashMap<String,String>(); 实例化时指定K,V为具体某个类型。
- 2楼网友:笑迎怀羞
- 2021-04-07 16:02
泛型必须是comparable的子类
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯