ExpertiDict

Java · Avançado · Inglês · Técnico

type erasure

/taɪp ɪˈreɪʒər/substantivo

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 compila

Exemplos

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

Veja também

Todos os termos de Java