Repaso
English
Java CoreIntermedioJV-17

¿Qué es el type erasure en los generics de Java?

Opciones

  1. Los generics se borran en tiempo de ejecución, así que List<String> es List (Opción correcta)
  2. Los tipos genéricos se borran del código fuente después de compilar
  3. Java elimina cualquier clase genérica que nadie use
  4. Los generics hacen el programa más lento, porque los tipos se comprueban después

Respuesta

El compilador elimina la información de tipos genéricos; en tiempo de ejecución, List<String> y List<Integer> son simplemente List

Por qué

Los generics (List<String>) permiten al compilador comprobar los tipos para que no necesites casts. Tras comprobarlos, el compilador elimina (erases) los argumentos de tipo y deja solo el tipo raw en el bytecode.

Consecuencias: no puedes escribir new T(), instanceof List<String> ni crear new T[10], y List<int> no está permitido porque los argumentos de tipo deben ser objetos.

Recuerda

Los generics son solo una comprobación en tiempo de compilación.

Términos clave

Practica esta pregunta en Repaso