Java · Avançado · Inglês · Técnico
type erasure
Processo em que o compilador remove os parâmetros de tipo dos genéricos depois de verificá-los, deixando no bytecode apenas tipos brutos e casts inseridos.
Onde usar
Explica erros como 'generic array creation' e por que não se faz new T() ou instanceof List<String>. Surge em reflexão e em frameworks de serialização.
Em código
List<String> a = new ArrayList<>();
List<Integer> b = new ArrayList<>();
boolean igual =
a.getClass() == b.getClass(); // true
Object o = a;
// o instanceof List<String> // não compilaExemplos
Because of type erasure, List<String> and List<Integer> are the same class at runtime.
Por causa do type erasure, List<String> e List<Integer> são a mesma classe em execução.
Type erasure is why you can't write new T().
O type erasure é o motivo de você não poder escrever new T().
Cuidado
Não dá para obter o T em execução por reflexão comum; frameworks usam o truque da subclasse anônima, como o TypeToken.
Sinônimos
apagamento de tipos
Antônimos
tipo reificado