Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: (Обновленные) Обобщения
Раздел: Ограниченные Параметры Типа
Универсальные Методы и Ограниченные Параметры Типа
Домашняя страница > Изучение Языка Java > (Обновленные) обобщения

Универсальные Методы и Ограниченные Параметры Типа

Ограниченные параметры типа являются ключевыми к реализации универсальных алгоритмов. Рассмотрите следующий метод, который считает число элементов в массиве T[], которые больше чем указанный элемент elem.

public static <T> int countGreaterThan(T[] anArray, T elem) {
    int count = 0;
    for (T e : anArray)
        if (e > elem)  // compiler error
            ++count;
    return count;
}

Реализация метода является прямой, но это не компилирует, потому что большее чем оператор (>) применяется только к типам примитивов, таким как short, int, double, long, float, byte, и char. Невозможно использовать оператор >, чтобы сравнить объекты. Чтобы решить проблему, используйте параметр типа, ограниченный интерфейсом Comparable<T>:

public interface Comparable<T> {
    public int compareTo(T o);
}

Получающийся код будет:

public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
    int count = 0;
    for (T e : anArray)
        if (e.compareTo(elem) > 0)
            ++count;
        return count;
}

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Ограниченные Параметры Типа
Следующая страница: Обобщения, Наследование, и Подтипы