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

Стирание Универсальных Типов

Во время процесса стирания типа компилятор Java стирает все параметры типа и заменяет каждого его первым, связанным, если параметр типа ограничивается, или Object, если параметр типа неограничен.

Рассмотрите следующий универсальный class, который представляет узел в отдельно связанном списке:

public class Node<T> {

    private T data;
    private Node<T> next;

    public Node(T data, Node<T> next) }
        this.data = data;
        this.next = next;
    }

    public T getData() { return data; }
    // ...
}

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

public class Node {

    private Object data;
    private Node next;

    public Node(Object data, Node next) {
        this.data = data;
        this.next = next;
    }

    public Object getData() { return data; }
    // ...
}

В следующем примере универсальный Node class использует ограниченный параметр типа:

public class Node<T extends Comparable<T>> {

    private T data;
    private Node<T> next;

    public Node(T data, Node<T> next) {
        this.data = data;
        this.next = next;
    }

    public T getData() { return data; }
    // ...
}

Компилятор Java заменяет ограниченный параметр типа T первым связанным class, Comparable:

public class Node {

    private Comparable data;
    private Node next;

    public Node(Comparable data, Node next) {
        this.data = data;
        this.next = next;
    }

    public Comparable getData() { return data; }
    // ...
}

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

Предыдущая страница: Введите Стирание
Следующая страница: Стирание Универсальных Методов