【问题标题】:Comparator issue in ocpjp sample questionsocpjp 示例问题中的比较器问题
【发布时间】:2012-11-15 19:40:09
【问题描述】:

我目前正在准备 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 参数用于 compare 方法。当我将 Comparator 更改为 Comparator<Integer> 时,错误已解决并且按预期工作。

我的问题是原始代码中的声明是否尊重 Java 7 的标准并且应该编译。

【问题讨论】:

    标签: java java-7 comparator ocpjp


    【解决方案1】:

    实际上,这不会编译。

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

    因此,此试题无效。

    【讨论】:

      【解决方案2】:

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

      如果您查看包含问题的页面页面,您可以在页面底部找到答案,并且此问题标记为 D

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-03
        • 2011-05-26
        • 1970-01-01
        相关资源
        最近更新 更多