如何在没有警告的情况下制作通用 compareTo?

How to make a Generic compareTo without Warnings?

我正在制作方法属于:

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

Type safety: Unchecked cast from Comparable to T

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

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);
    }               

}

最一般的是

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);
    }               

}

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