Java ocpjp示例问题中的比较器问题
我目前正在准备JavaSE7程序员考试,我试图在Oracle网站上解决示例问题。我被这件事困住了:Java ocpjp示例问题中的比较器问题,java,java-7,comparator,ocpjp,Java,Java 7,Comparator,Ocpjp,我目前正在准备JavaSE7程序员考试,我试图在Oracle网站上解决示例问题。我被这件事困住了: import java.util.*; public class Primes2 { public static void main(String[] args) { Integer[] primes = {2, 7, 5, 3}; MySort ms = new MySort(); Arrays.so
import java.util.*;
public class Primes2 {
public static void main(String[] args) {
Integer[] primes = {2, 7, 5, 3};
MySort ms = new MySort();
Arrays.sort(primes, ms);
for(Integer p2: primes)
System.out.print(p2 + " ");
}
static class MySort implements Comparator {
public int compare(Integer x, Integer y) {
return y.compareTo(x);
}
}
}
结果如何
A) 2 3 5 7
B) 2 7 5 3
C) 7 5 3 2
D) 编译失败
E) 在运行时引发异常
问题可以在这里找到:
网站上显示的正确答案是C。我测试了代码,发现它没有编译,因为Comparator是参数化的,并且在给定的代码中没有指示类型,因此编译器期望compare方法的对象参数。当我用比较器
更换比较器时,错误得到了解决,并且工作正常
我的问题是,原始代码中的声明是否尊重Java 7的标准,是否应该编译。实际上,这并不编译 为了有效,必须将
Comparator
键入为Comparator
或compare()
methods参数必须为Object
类型
因此,该试题无效。该试题有效,正确答案为“D)编译失败” 如果您查看包含问题的页面,您可以在页面底部找到答案,并且此问题的标记为D