2016-11-19 13 views
0

私はジェネリック降下コンパレータを開発しようとしています。 これはStringとうまくいっていますが、compareToメソッドを使用している行の "型の安全性:チェックされていないキャスト(比較対象<T>とT")のような警告があります。
誰でも助けてくれますか?ジェネリック降下コンパレータを作成する際の型の安全警告

package ytp.collections; 
import java.util.Comparator; 

public class DescendingComparator<T> implements Comparator<Comparable<T>> { 
    @Override 
    public int compare(Comparable<T> o1, Comparable<T> o2) { 
     int ret = o1.compareTo((T) o2); 
     if (ret < 0) { 
      return 1; 
     } 
     if (ret > 0) { 
      return -1; 
     } 
     return 0; 
    } 
} 

答えて

0

Comparable<T>がnecesseraly Tそのものではないので、まあ、これはあります。 Comparable<T>を実装する多くの異なるクラスを作成できますが、Tは拡張しないでください。あなたがする必要がどのような

ジェネリックパラメータを制限にされていますCollections.html#reverseOrder(java.util.Comparator):また逆コンパレータ機能が既にJDKに存在していることに注意してください

public class DescendingComparator<T extends Comparable<T>> implements Comparator<T> { 
    @Override 
    public int compare(T o1, T o2) { 
     int ret = o1.compareTo(o2); 
     if (ret < 0) { 
      return 1; 
     } 
     if (ret > 0) { 
      return -1; 
     } 
     return 0; 
    } 
} 

+0

Thnaks!私は私の誤解を理解し、あなたのコードはうまくいっています。 – Yoshipi

関連する問題