Тип Generics Java Erasure байт-код

Согласно документации Java наСтирание родовых типов,

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

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 заменяет егообъект:

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

Но после компиляции с Java 1.7.0_11, когда я открыл его любым декомпилятором, я вижу тот же код, что и исходный код.

public class Node<T>
{
  private T data;
  private Node<T> next;

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

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

Если Type-Erasure применяется при компиляции, то байт-код не должен содержать общую информацию, как показано выше. Просьба уточнить меня.

НОТА: я используюJD-GUI в качестве декомпилятора для анализа байт-кода

Ответы на вопрос(0)

Ваш ответ на вопрос