Me estoy convirtiendo una aplicación para utilizar Java 1.5 y han encontrado el siguiente método:¿Puedo convertir el siguiente código para usar genéricos?
/**
* Compare two Comparables, treat nulls as -infinity.
* @param o1
* @param o2
* @return -1 if o1<o2, 0 if o1==o2, 1 if o1>o2
*/
protected static int nullCompare(Comparable o1, Comparable o2) {
if (o1 == null) {
if (o2 == null) {
return 0;
} else {
return -1;
}
} else if (o2 == null) {
return 1;
} else {
return o1.compareTo(o2);
}
}
Tu lugar ideal para realizar el método de tomar dos Comparables del mismo tipo, es posible convertir esto y cómo ?
pensé lo siguiente sería hacer el truco:
protected static <T extends Comparable> int nullCompare(T o1, T o2) {
pero ha fracasado para deshacerse de una advertencia en IntelliJ "llamada sin marcar para 'compareTo (T)' como miembro del tipo de prima java' .lang.Comparable '" en la línea:
return o1.compareTo(o2);
Aargh! No puedo creer que estuve tan cerca –
Esto hace que todos salgan disparados. – jodonnell
¿Estás seguro de que T extiende Comparable es correcto? Parece que T se extiende Comparable > sería más correcto? –
cletus