4

違いは何ですか:

public <E>int  compareTo(E e) // first line (compilation error)

public int compareTo(E e) // second line (OK)

2行目でのみコンパイラを通過します。その特定の要素がクラス内で普遍的に宣言されていることを確認する必要があるということですか?そうでなければ、任意の要素を入れることができ、あまり意味がありません。私はそれを正しい方法で見ていますか?前もって感謝します。

4

2 に答える 2

2

戻り型の前に型パラメーター宣言を置きます。

public <E> int compareTo(E e) 

クラスレベルの<E>タイプパラメータを使用することもできますが、メソッドレベルのパラメータはそれをシャドウイングします。この質問でそれについてもっと読んでください。

于 2013-03-26T10:59:27.273 に答える
0
public <E extends String> int compareTo(E o) {  //1
}

Stringプログラミングのニーズに応じてではなく、任意のクラスを検討できます。

上記のシナリオは、インターフェースを実装しているクラスについて考慮されていComparableます。

class SimpleClass<E> {  // 2
    E var;  
    public <E> int compareTo(E o) {         
        return 0;
    }
}

上記の//2のクラスは、インターフェイスを実装しない場合に機能しComparableます。EはString(他のクラス)を拡張する必要はありません。

于 2013-03-26T11:01:13.767 に答える