ocpjp示例问题中的比较器问题

时间:2012-11-15 19:40:10

标签: java java-7 comparator ocpjp

我目前正在准备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);
         }
     }
}

结果是什么?

A)2 3 5 7

B)2 7 5 3

C)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参数。当我用Comparator<Integer>更改Comparator时,错误已解决,并且按预期工作。

我的问题是原始代码中的声明是否符合Java 7的标准,而编译。

2 个答案:

答案 0 :(得分:2)

实际上,这不会编译。

为了有效,Comparator必须键入为Comparator<Integer>compare()方法参数必须为Object类型。

因此,此考题无效。

答案 1 :(得分:1)

问题是有效的,正确的答案是“D)编译失败”。

如果您在页面上查看问题,可以在底部找到答案,并且这个问题标记为D