如何在没有警告的情况下进行通用比较?

时间:2017-03-10 17:54:41

标签: java generics compiler-warnings comparable

我正在使该方法属于:

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向我展示了警告:

  

类型安全:从Comparable到T

取消选中

如何在没有警告的情况下编写此通用方法?

2 个答案:

答案 0 :(得分: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);
    }               

}

答案 1 :(得分: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);
    }               

}

它甚至适用于与其他类型相当的类型。