public class Test <T extends Comparable>{
public static void main(String[] args){
List<String> lst = Array.asList("abc","def");
System.out.println(func(lst));
}
public static boolean func(List<**here**> lst){
return lst.get(0).compareTo(lst.get(1)) == 0;
}
}
为什么在这里写“?扩展可比”就会编译,而写“可比”就不会编译?
提前道谢。
发生这种情况是因为泛型是不变的。即使字符串
是可比
,也意味着:
String s = "";
Comparable c = s; // would work
这些泛型将不起作用:
List<Comparable> listC = List.of();
List<String> listS = List.of();
listC = listS; // will fail
无论comparable
和string
之间的关系如何,这都是行不通的。
public static boolean func(List<? extends Comparable> lst) {
...
}
List<? extends Comparable> listC = List.of();
List<String> listS = List.of();
listC = listS; // would work here
public static <T extends Comparable<? super T>> boolean func(List<T> lst) {
.....
}
问题内容: Comparable和Comparator之间的主要区别是什么。 在什么情况下,哪个比另一个优先? 问题答案: 当你的类实现时,该类的方法将定义该对象的“自然”顺序。根据合同,该方法有义务(尽管不要求)与该对象上的其他方法保持一致,例如,当比较返回true 时,应始终为对象返回0 。 一个比较本身就是如何比较两个对象的定义,可用于可能不与自然顺序排列的方式来比较的对象。 例如,字符串通
我的任务是用java编写mergesort,任务还规定我不能使用整数,我必须使用可比较的整数。这是我第一次使用java。我的问题是在合并函数内比较两个comp int数组中的元素。我尝试了if(list[I])compareTo(list2[j]),但compareTo只能取整数。任何帮助都将不胜感激
当我在浏览上面的接口时,在阅读了许多相同主题的站点后,我对这些接口的语法不是很清楚。 请考虑以下代码段: 如果每个查询都是可理解的。
编辑问题以包括所需的行为、特定问题或错误,以及再现问题所需的最短代码。这将帮助其他人回答这个问题。 我的任务是用java编写mergesort,任务还规定我不能使用整数,我必须使用可比较的整数。这是我第一次使用java。我的问题是在合并函数内比较两个comp int数组中的元素。我尝试了if(list[I])compareTo(list2[j]),但compareTo只能取整数。任何帮助都将不胜感
我的程序实现了一个类,其对象包含以下实例变量:、、和。 在对链接列表执行任何其他操作之前,我需要对产品的链接列表进行排序。 我想先按优先级(从最低到最高)对列表进行排序。如果优先级相同,请查看价格(从低到高),然后查看名称(按字母顺序)。 我做了很多关于、和的阅读。我相信我需要使用接口并实现一个方法。我的想法是,因为、和都有一个“自然”排序,所以使用更有意义。 然后当我想对我的LinkedList
假设您有ClassA、ClassB、ClassC和InterfaceA。 ClassA和ClassB实现interfaceA,而classC包含一个列表