Come può essere migliorato Java in modo che non debba più eseguire cancellazioni di tipi?

15

Il tutorial ufficiale Java sui generici spiega la cancellazione dei tipi e il motivo per cui è stato aggiunto a il compilatore:

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.

Questo probabilmente era un approccio pragmatico, o forse il meno doloroso. Tuttavia, ora che i farmaci generici sono ampiamente supportati in tutto il settore, cosa si può fare per non aver bisogno della cancellazione dei tipi? È fattibile senza bisogno di rompere la compatibilità all'indietro, o se è fattibile, è pratico?

L'ultima affermazione nella citazione di cui sopra diventa autoreferenziale? Cioè: "type erasure abilita le applicazioni Java che usano i generici per mantenere la compatibilità binaria con le librerie Java e le applicazioni che sono state create con versioni Java che eseguono la cancellazione dei tipi."

    
posta auser 05.06.2012 - 14:24
fonte

1 risposta

7

Il termine del ciclo di vita si applica a Java Development Toolkit e Java Runtime Environment. E solo le versioni Oracle (Sun). Ma non si applica alle applicazioni scritte da terze parti. L'intenzione è di non interrompere mai il codice che è mai stato eseguito sulla JVM, quindi è improbabile che Java smetterà mai di cancellare i tipi.

Naturalmente C # ha anche introdotto i generici nella versione successiva in modo compatibile con le versioni precedenti senza cancellare il tipo, ma fondamentalmente significava duplicare tutte le classi di raccolta. Quale suppongo sia ciò che i progettisti Java non vogliono fare e quindi perché hanno scelto la cancellazione dei caratteri in primo luogo. Senza tipi di valore, il vantaggio dei generici non cancellati dal tipo non è così grande.

    
risposta data 05.06.2012 - 14:48
fonte

Leggi altre domande sui tag