这是代码片段(来自 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); }
};
}
正如我所关注的,您有一个使用通配符的方法,该方法在比较类型 T 和“above”的地方扩展了可比较的值。然后它返回一个新的 Comparator,其中显然有一个方法,该方法使用两个 T 类型的对象返回compareTo 的值。所以问题:
- 这是在方法内定义方法吗?我以为你做不到 Java 中的内容。
- 它返回一个方法吗?有些事我也认为你做不到 在Java中。
- 我该如何使用它?本书使用的例子包括其他类似的、 方法有参数。
这里没有参数,那么o1和o2从哪里来?
最佳答案
这是一个 anonymous class :
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);
}
};
}
你是:
- 在匿名类中声明一个方法
compare
,该方法位于方法reverseOrder
中。 - 返回匿名类的实例。
- 将
o1
和o2
声明为compare
的参数。
关于java - 有人能解释一下这个 Java 代码片段是如何工作的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656769/