Java-дженерики с несколькими параметрами

Я видел на сайте примеры, которые имеют дело с дженериками с несколькими параметрами, но ни один из них не подходит для моей ситуации.

Итак, вот в чем дело :Я пытаюсь изучить дженерики Java и решил создать простую служебную функцию поиска в двоичном массиве. Я тестирую его, используя пользовательские объекты и целые числа. Для получения отзывов об ошибках и предупреждений я использую Eclipse. Вот что у меня есть:

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;
    }
}

Итак, очевидно, я получаю предупреждения для необработанных типов о том, что дженерики должны быть параметризованы. Как я могу сделать это правильно, учитывая, что у меня есть несколько параметров, которые должны быть одного типа?

РЕШЕНИЕ

Вот рабочее решение с использованием дженериков с правильными проверками параметров:

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;
    }
}
6
задан jjNford 7 May 2012 в 10:47
поделиться