Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有警告的情况下进行常规比较?_Java_Generics_Compiler Warnings_Comparable - Fatal编程技术网

Java 如何在没有警告的情况下进行常规比较?

Java 如何在没有警告的情况下进行常规比较?,java,generics,compiler-warnings,comparable,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 re

我正在使方法归属于:

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

    }
public static int compareTo(可比o1,可比o2){
如果(o1==o2){
//相等于
返回0;
}如果(o1!=null&&o2!=null),则为else{
//比较
返回o1。比较((T)o2);
}否则{
//不平等
返回值(o1==null?-1:1);
}               
}
但Eclipse给了我一个警告:

类型安全性:未经检查的铸造,与T相当

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

publicstaticintcompareto(to1,to2){
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);
    }               

}
如果(o1==o2){ //相等于 返回0; }如果(o1!=null&&o2!=null),则为else{ //比较 返回o1。与(o2)相比; }否则{ //不平等 返回值(o1==null?-1:1); } }
公共静态整数比较(tO1,tO2){
如果(o1==o2){
//相等于
返回0;
}如果(o1!=null&&o2!=null),则为else{
//比较
返回o1。与(o2)相比;
}否则{
//不平等
返回值(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);
    }               

}
public static int compareTo(可比o1,T o2){
如果(o1==o2){
//相等于
返回0;
}如果(o1!=null&&o2!=null),则为else{
//比较
返回o1。与(o2)相比;
}否则{
//不平等
返回值(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);
    }               

}
public static int compareTo(可比o1,T o2){
如果(o1==o2){
//相等于
返回0;
}如果(o1!=null&&o2!=null),则为else{
//比较
返回o1。与(o2)相比;
}否则{
//不平等
返回值(o1==null?-1:1);
}               
}

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

哪行显示警告?@MohamedELAYADI我猜这行“return o1.compareTo((T)o2);”但不确定哪行显示警告?@MohamedELAYADI我猜这行“return o1.compareTo((T)o2);”但不确定使用
@JB niset,不,通常最好避免使用通配符,因为比较不同类型的对象通常不好。使用
@JB Nizet更好,不,通常最好避免使用通配符,因为比较不同类型的对象通常不好。