Ho visto esempi sul sito che si occupano di generici con più parametri ma nessuno che funzioni per la mia situazione.Generici Java con più parametri
Quindi, ecco l'accordo: sto cercando di imparare i generici Java e ho deciso di creare una semplice funzione di utilità di ricerca di array binario. Lo sto testando usando oggetti personalizzati e interi. Per ottenere feedback su errori e avvertenze sto usando Eclipse. Ecco cosa ho:
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;
}
}
Quindi ovviamente ricevo gli avvisi per i tipi di Raw che dicono che i generici devono essere parametrizzati. Come posso farlo correttamente dato che ho più parametri che entrambi devono essere dello stesso tipo?
SOLUZIONE
Ecco la soluzione di lavoro utilizzando farmaci generici con il corretto controllo dei parametri:
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;
}
}
Proprio ti permette di sapere, questo non riuscirà se si passa in una lunghezza zero o array null. –
Sì, è un esempio banale: mi interessa il concetto di generici multipli, non la ricerca binaria. Grazie comunque. – jjNford