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更好,不,通常最好避免使用通配符,因为比较不同类型的对象通常不好。