我目前正在为Java 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);
}
}
}结果是什么?
( A) 2 3 5 7
( B) 2 7 5 3
( C) 7 5 3 2
( D)汇编失败。
E)在运行时抛出异常。
这个问题可以在这里找到:804
站点上显示的正确答案是C。我测试了代码,发现它没有编译,因为比较器是参数化的,并且在给定的代码中没有指明类型,因此编译器需要比较方法的对象参数。当我用Comparator<Integer>更换比较器时,这个错误得到了解决,并按预期的方式工作。
我的问题是,原始代码中的声明是否尊重Java 7的标准,是否应该编译。
发布于 2012-11-15 19:51:43
实际上,这并不能编译。
为了有效,必须将Comparator输入为Comparator<Integer>或compare()方法参数必须为Object类型。
因此,这个试题是无效的。
发布于 2013-01-18 00:23:13
这个问题是有效的,正确的答案是"D)编译失败“。
如果你用问题检查页面,你可以在它的底部找到答案,这个问题被标记为D。
https://stackoverflow.com/questions/13404870
复制相似问题