Continuando a leggere l'articolo di cui ho parlato nel mio ultimo post, ho scoperto una cosa inquietante: Il compilato generato da Java 1.5 "Tiger", sarà perfettamente eseguibile su una virtual machine precedente a questo compilatore.

Questo si traduce nel seguente ragionamento rispetto i Generics: Nessuna modifica è stata introdotta nel bytecode di Java, quindi i generics sono una mera traduzione del codice Java 1.5 in Java 1.4 oggetto della compilazione finale. Questo significa che per effettuare una traduzione vengono introdotti un'infinità di cast e dei metodi bridge per consentire le conversioni. (leggete l'articolo, è tutto nero su bianco)

Ora, se mettiamo assieme le problematiche di boxing/unboxing di cui sopra e le attività di cast a go-go, ne otteniamo che le performance di un codice che usa i generics saranno notevolmente peggiorate.

Conclusione: I generics in Java sono una pura operazione di marketing.

Chissà perchè?