Je suis convertir une application à utiliser Java 1.5 et ont trouvé la méthode suivante:Puis-je convertir le code suivant pour utiliser des génériques?
/**
* 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);
}
}
Idéalement je voudrais faire la méthode prendre deux Comparables du même type, il est possible de convertir cela et comment ?
Je pensais que ce qui suit ferait l'affaire:
protected static <T extends Comparable> int nullCompare(T o1, T o2) {
mais il n'a pas réussi à se débarrasser d'un avertissement dans IntelliJ « Appel non contrôlé à « compareTo (T) » en tant que membre de type raw « java .lang.Comparable ' » sur la ligne:
return o1.compareTo(o2);
Aargh! Je n'arrive pas à croire que j'étais si proche –
Ça remonte tout le monde. – jodonnell
Êtes-vous sûr que T s'étend Comparable est vrai? Il semble que T s'étend comparable > serait plus correct? –
cletus