Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能解释一下这个Java代码片段是如何工作的吗?_Java_Generics_Collections - Fatal编程技术网

有人能解释一下这个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); } }; } 公共

以下是片段(来自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); }
    };
}

公共静态问题/尝试回答:

正如我所说,您有一个使用通配符的方法,该通配符扩展了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);
        }
    };
}