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

Стирание Универсальных Методов

Компилятор Java также стирает параметры типа в универсальных параметрах метода. Рассмотрите следующий универсальный метод:

// Counts the number of occurrences of elem in anArray.
//
public static <T> int count(T[] anArray, T elem) {
    int cnt = 0;
    for (T e : anArray)
        if (e.equals(elem))
            ++cnt
        return cnt;
}

Поскольку T неограничен, компилятор Java заменяет его Object:

public static int count(Object[] anArray, Object elem) {
    int cnt = 0;
    for (Object e : anArray)
        if (e.equals(elem))
            ++cnt;
        return cnt;
}

Предположите, что следующие классы определяются:

class Shape { /* ... */ }
class Circle extends Shape { /* ... */ }
class Rectangle extends Shape { /* ... */ }

Можно записать универсальный метод, чтобы потянуть различные формы:

public static <T extends Shape> void draw(T shape) { /* ... */ }

Компилятор Java заменяет T Shape:

public static void draw(Shape shape) { /* ... */ }

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

Предыдущая страница: Стирание Универсальных Типов
Следующая страница: Эффекты Стирания Типа и Мостовых методов