Spec-Zone .ru
спецификации, руководства, описания, API
|
Во время процесса стирания типа компилятор 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; } // ... }