Generics Java: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: niente spazio dopo l'apostrofo e modifiche minori |
|||
Riga 2:
Il [[Java 5|JDK 1.5]] ha introdotto alcune estensioni al [[Java (linguaggio)|linguaggio Java]]. Una di questa è l'introduzione dei '''generics''' o '''tipi generici'''.
Un
Riga 79:
== Erasure ==
L'
L'aggiunta di questi cast non è esplicita e il linguaggio di progetto fornisce la '''Cast-iron guarantee''': ossia il cast implicito aggiunto alla compilazione dei generici: non può mai fallire. Questa è una regola che si applica per il codice che non presenta ''unchecked warnings''.
I vantaggi dell'implementazione via '''Erasure''', sono:
Riga 111:
</source>
Qui il principio vale fra ''List'' e ''ArrayList'' e fra ''Number'' e ''Integer Double'' in
''List<Integer>'' invece '''non è un sottotipo''' di ''List<Number>'' in quanto viene violato nuovamente '''il principio di sostituzione''', ad esempio:
<source lang="java">
Riga 129:
*tipo '''controvariante''' ''List<super T>'': cattura le proprietà dei ''List<X>'' in cui ''X'' è esteso da ''T''; si usa per specificare tipi che possono essere solo scritti.
*tipo '''bivariante''' ''List<?>'': cattura tutti i ''List<T>'' senza distinzioni; si usa per specificare i tipi che ''non'' consentono né letture né scritture.
== Definizione di una classe generica ==
Line 169 ⟶ 168:
</source>
==Note==
|