2

私は現在、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

ハ) 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 がパラメーター化されており、指定されたコードでは型が示されていなかったため、コンパイルされないことがわかりました。したがって、コンパイラーは比較メソッドのオブジェクト パラメーターを予期していました。Comparator を に変更しComparator<Integer>たところ、エラーが解消され、期待どおりに動作しました。

私の質問は、元のコードのその宣言が Java 7 の標準を尊重し、コンパイルする必要があるかどうかです。

4

2 に答える 2

2

事実上、それはコンパイルされません。

有効であるためには、次のようComparatorに入力するComparator<Integer>か、compare()メソッドの引数をObjectType にする必要があります。

したがって、この試験問題は無効です。

于 2012-11-15T19:51:43.120 に答える
1

質問は有効で、正解は「D) コンパイルが失敗する」です。

質問のあるページページを確認すると、その下部に回答があり、この質問には D とマークされています

于 2013-01-18T00:23:13.780 に答える