有人能解释一下这个Java代码片段是如何工作的吗?
以下是片段(来自Java泛型和集合),下面是问题:有人能解释一下这个Java代码片段是如何工作的吗?,java,generics,collections,Java,Generics,Collections,以下是片段(来自Java泛型和集合),下面是问题: public static <T extends Comparable<? super T>> Comparator<T> reverseOrder() { return new Comparator<T>() { public int compare(T o1, T o2) { return o2.compareTo(o1); } }; } 公共
public static <T extends Comparable<? super T>> Comparator<T> reverseOrder()
{
return new Comparator<T>() {
public int compare(T o1, T o2) { return o2.compareTo(o1); }
};
}
公共静态问题/尝试回答:
正如我所说,您有一个使用通配符的方法,该通配符扩展了comparable,用于比较类型T和“above”
方法不能扩展任何内容,因此不,这是不正确的。该方法是泛型的,可以用于扩展Comparable的具体类
然后,它返回一个新的比较器,该比较器中显然有一个方法,该方法使用两个类型为T的对象返回比较器的值。因此,问题:
好的,有点正确
1) 这是在方法中定义方法吗?我以为你不能用Java来做
它不是方法中的方法。它是一个返回Comparator类型的对象的方法,该对象有自己的比较方法
2) 它是否返回一个方法?我还以为你用Java做不到
否,它返回一个匿名内部类的对象
3) 我怎么用这个?本书使用了其他类似方法具有参数的示例。这没有参数,所以o1和o2来自哪里
o1和o2是比较器对象比较方法的声明参数。问题/尝试回答:
正如我所说,您有一个使用通配符的方法,该通配符扩展了comparable,用于比较类型T和“above”
方法不能扩展任何内容,因此不,这是不正确的。该方法是泛型的,可以用于扩展Comparable的具体类
然后,它返回一个新的比较器,该比较器中显然有一个方法,该方法使用两个类型为T的对象返回比较器的值。因此,问题:
好的,有点正确
1) 这是在方法中定义方法吗?我以为你不能用Java来做
它不是方法中的方法。它是一个返回Comparator类型的对象的方法,该对象有自己的比较方法
2) 它是否返回一个方法?我还以为你用Java做不到
否,它返回一个匿名内部类的对象
3) 我怎么用这个?本书使用了其他类似方法具有参数的示例。这没有参数,所以o1和o2来自哪里
o1和o2是比较器对象比较方法的声明参数。它是:
公共静态它是一个:
publicstatic以下关于比较器和匿名类的教程可能会有所帮助:
以下关于比较器和匿名类的教程可能会有所帮助:
匿名类:仔细看,o1和o2是参数,它们来自于此。我编辑了你的文章,使用标记语法进行枚举,但我认为最后一句应该在问题3)。道歉!匿名类:仔细看,o1和o2是参数,这就是它们的来源。我编辑了你的文章,在枚举中使用标记语法,但我认为最后一句应该在问题3)。道歉!
public static <T extends Comparable<? super T>> Comparator<T> reverseOrder() {
return new Comparator<T>() {
public int compare(T o1, T o2) {
return o2.compareTo(o1);
}
};
}