我目前正在准备 Java SE 7 程序员考试,并尝试解决 Oracle 站点上的示例问题。我被困在这个:
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);
}
}
}
结果是什么?
一)2 3 5 7
B) 2 7 5 3
三)7 5 3 2
D) 编译失败。
E) 运行时抛出异常。
问题可以在这里找到:http ://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=303&p_certName=SQ1Z0_804
网站上显示的正确答案是 C。我测试了代码,发现它没有编译,因为 Comparator 是参数化的,并且在给定的代码中没有指明类型,因此编译器期望 Object 参数用于 compare 方法。当我将 Comparator 更改为 时Comparator<Integer>
,错误已解决,并且按预期工作。
我的问题是原始代码中的声明是否尊重 Java 7 的标准并且应该编译。