Generics Java: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 120:
</source>
 
== Tipi parametrici varianti (Wildcard) ==
Non può esistere una compatibilità generale fra i tipi parametrici. Se si è alla ricerca della compatibilità, bisogna prendere in considerazione casi specifici e tipi di parametri di singoli metodi. Quindi, alla normale notazione dei tipi generici List<T>, usata per creare oggetti, si affianca una nuova notazione, pensata per esprimere i tipi accettabili come parametri in singoli metodi.
 
Si parla quindi di tipi parametrici varianti, in [[Java (linguaggio)|Java]] detti '''wildcard'''.
 
Posto che la notazione ''List<T>'' denota il normale tipo generico, si introducono le seguenti '''notazioni wildcard''':
*tipo '''covariante''' ''List<extends T>'': cattura le proprietà dei ''List<X>'' in cui ''X'' estende ''T''; si usa per specificare tipi che possono essere solo letti.
*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 ==