He visto ejemplos en el sitio que tratan genéricos con múltiples parámetros pero ninguno que funcione para mi situación.Genéricos de Java con múltiples parámetros
Así que este es el trato: estoy tratando de aprender genéricos de Java y he decidido crear una función de utilidad de búsqueda de matriz binaria simple. Lo estoy probando usando objetos personalizados y enteros. Para obtener comentarios sobre errores y advertencias, estoy usando Eclipse. Esto es lo que tengo:
public static int binarySearch(Comparable[] array, Comparable item, int start, int end) {
if(end < start) {
return -1;
}
int mid = (start + end)/2;
if(item.compareTo(array[mid]) > 0) {
return binarySearch(array, item, mid + 1, end);
} else if(item.compareTo(array[mid]) < 0) {
return binarySearch(array, item, start, mid - 1);
} else {
return mid;
}
}
Obviamente recibo las advertencias para los tipos Raw diciendo que los genéricos deberían estar parametrizados. ¿Cómo puedo hacer esto correctamente dado que tengo múltiples parámetros que ambos deben ser del mismo tipo?
SOLUCIÓN
Aquí está la solución de trabajo utilizando los genéricos con las comprobaciones de parámetros correctos:
public static <T extends Comparable<? super T>> int binarySearch(T[] array, T item, int start, int end) {
if(array.length == 0) {
return -1;
}
if(item == null) {
return -1;
}
if(start < 0) {
return -1;
}
if(end < start) {
return -1;
}
int mid = (start + end)/2;
if(item.compareTo(array[mid]) > 0) {
return binarySearch(array, item, mid + 1, end);
} else if(item.compareTo(array[mid]) < 0) {
return binarySearch(array, item, start, mid - 1);
} else {
return mid;
}
}
Sólo quiero hacerles saber, esto producirá un error si se pasa en una longitud cero o matriz nula. –
Sí, es un ejemplo trivial: me interesa el concepto de múltiples genéricos, no la búsqueda binaria. Gracias sin embargo. – jjNford