2017-03-10 9 views
0

は所属:警告なしで汎用compareToを作成するには?私は方法を作ってるんだ

public static <T> int compareTo(Comparable<T> o1,Comparable<T> o2){ 

     if(o1==o2){ 
      //Equals 
      return 0; 
     }else if(o1!=null && o2!=null){ 
      //Comparation 
      return o1.compareTo((T) o2); 
     }else{ 
      //Not equals 
      return (o1==null?-1:1); 
     }    

    } 

しかし、Eclipseは私に警告を示しています。

型の安全性をチェック解除はT

に匹敵するからキャスト私はこれを書くことができますどのように警告のない一般的な方法?

+1

どの行に警告が表示されますか? –

+0

@MohamedELAYADI私はこの行を "return o1.compareTo((T)o2);"と推測します。確かではありません – lucasvw

答えて

4
public static <T extends Comparable<T>> int compareTo(T o1,T o2){ 

    if(o1==o2){ 
     //Equals 
     return 0; 
    }else if(o1!=null && o2!=null){ 
     //Comparation 
     return o1.compareTo(o2); 
    }else{ 
     //Not equals 
     return (o1==null?-1:1); 
    }    

} 
+3

'>' –

+0

もちろん使い易いでしょう! :)ありがとう! –

+0

@JB Nizet、いいえ、通常、ワイルドカードを避けるほうが良いでしょう。異なるタイプのオブジェクトを比較するのは通常悪いからです。 –

0

最も一般的には

public static <T> int compareTo(Comparable<T> o1, T o2){ 

    if(o1==o2){ 
     //Equals 
     return 0; 
    }else if(o1!=null && o2!=null){ 
     //Comparation 
     return o1.compareTo(o2); 
    }else{ 
     //Not equals 
     return (o1==null?-1:1); 
    }    

} 

それも、他のタイプに匹敵するタイプのために働くだろう。

関連する問題