如何在没有警告的情况下制作通用 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);
}
}
它甚至适用于与其他类型相当的类型。
我正在制作方法属于:
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);
}
}
它甚至适用于与其他类型相当的类型。