Официальный Java учебник по дженериков объясняет тип стиранию и почему он был добавлен в компиляторе:
Когда создается универсальный тип, компилятор переводит эти типы с помощью метода, называемого стиранием типа, - процесс, в котором компилятор удаляет всю информацию, связанную с параметрами типа и аргументами типа, внутри класса или метода. Стирание типа позволяет приложениям Java, использующим обобщенные элементы, поддерживать двоичную совместимость с библиотеками Java и приложениями, которые были созданы до использования обобщенных типов.
Скорее всего, это был прагматичный подход или, возможно, наименее болезненный. Однако теперь, когда дженерики широко поддерживаются в отрасли, что можно сделать, чтобы нам не требовалось стирание типов? Это возможно без необходимости обратной совместимости или, если это возможно, практично?
Последнее утверждение в приведенной выше цитате стало ссылаться на себя? То есть: «стирание типов позволяет приложениям Java, использующим универсальные средства, поддерживать двоичную совместимость с библиотеками Java и приложениями, которые были созданы с версиями Java, которые выполняют стирание типов».