1

解かなければならない練習問題があるのですが、頭に浮かびません。問題は次のとおりです。次のプログラムは、一連の文字列を昇順で出力します。sort は文字列の配列のみをソートすることに注意してください。タイプ T のオブジェクトをソートするように書き直してください。ここで、T は一般的なタイプ名としてソート ヘッダーに導入され、T は Comparable を実装します。変更は、並べ替えのヘッダーと本文の変更に限定する必要があります。だから私が与えられたコードは次のとおりです。

class SortNames {

static void sort(String[] s) {
    for (int i = 0; i<s.length; i++) {
        for (int j = i+1; j < s.length; j++) {
            if (s[i].compareTo(s[j])>0) {
                String t;
                t = s[i]; s[i] = s[j]; s[j] = t;
            }
            }
    }
}

public static void main(String[] args) {
    String[] names = {"Pete","Jill","May","Anne","Tim"};             
    sort(names);
    for (String s:names){ 
        System.out.println(s);
    }
}

だから私がしたことは:

class TestSort{

static void sort(T[] s) {
    for (int i = 0; i<s.length; i++) {
        for (int j = i+1; j < s.length; j++) {
            if (s[i].compareTo(s[j])>0) {
                Object t;
                t = s[i]; s[i] = s[j]; s[j] = t;
            }
    }
    }
}

public static void main(String[] args) {
    int[] numbers = {3,6,2,7,9,1,8};
    sort(numbers);
    for (int a:numbers){ 
        System.out.println(a);
     }
}

コードをコンパイルすると、次のようになります。

TestSort.java:3: error: cannot find symbol
static void sort(T[] s) {
                 ^
symbol:   class T
location: class TestSort
1 error

なにが問題ですか?:(誰かが私に読むための良い情報源を勧めてくれませんか?明日それで試験があります:(事前に感謝します!

4

1 に答える 1

4

Tメソッドをジェネリックにするには、メソッドでジェネリック変数を定義する必要がありますsort。データ型としてはT、ジェネリック型パラメーターを参照するだけです。

static <T extends Comparable<T>> void sort(T[] s) {
于 2013-11-07T20:55:53.513 に答える