Como o Java pode ser melhorado para que não precise mais executar o apagamento de tipos?

15

O tutorial oficial de Java sobre genéricos explica o apagamento do tipo e por que ele foi adicionado a o compilador:

When a generic type is instantiated, the compiler translates those types by a technique called type erasure — a process where the compiler removes all information related to type parameters and type arguments within a class or method. Type erasure enables Java applications that use generics to maintain binary compatibility with Java libraries and applications that were created before generics.

Isso provavelmente foi uma abordagem pragmática, ou talvez a menos dolorosa. No entanto, agora que os genéricos são amplamente suportados em todo o setor, o que pode ser feito para que não precisemos do apagamento de tipos? É possível sem a necessidade de quebrar a compatibilidade ou, se for viável, é prático?

A última afirmação na citação acima se tornou auto-referencial? Ou seja: "o tipo de eliminação permite que aplicativos Java que usam genéricos mantenham a compatibilidade binária com bibliotecas e aplicativos Java que foram criados com versões do Java que executam o apagamento de tipos."

    
por auser 05.06.2012 / 14:24
fonte

1 resposta

7

O fim da vida se aplica ao Java Development Toolkit e ao Java Runtime Environment. E apenas as versões do Oracle (Sun). Mas isso não se aplica a aplicativos escritos por terceiros. A intenção é nunca quebrar o código que já foi executado na JVM, portanto, é improvável que o Java pare de fazer o apagamento de tipos.

É claro que o C # também introduziu genéricos em versões posteriores de maneira compatível com versões anteriores sem fazer o apagamento de tipos, mas basicamente significava duplicar todas as classes de coleção. O que eu suponho é o que os projetistas de Java não querem fazer e, portanto, por que eles escolheram o apagamento do tipo em primeiro lugar. Sem tipos de valor, a vantagem de genéricos não-apagados não é tão grande assim.

    
por 05.06.2012 / 14:48
fonte

Tags