Ho letto alcuni argomenti che trattano alcune domande sui generici, come ad esempio il loro relationship with raw types. Ma mi piacerebbe una spiegazione aggiuntiva su una determinata linea trovata nello Java SE tutorial on unbound generics.Generics Java, caratteri jolly senza restrizioni <?> vs <Object>
Secondo una frase:
L'obiettivo di StampaLista è quello di stampare un elenco di qualsiasi tipo, ma non riesce a raggiungere tale obiettivo - viene stampato solo un elenco di istanze di oggetti; non può stampare Elenco Numero intero >, Elenco <Stringa>, Elenco <Doppio> e così via, poiché non sono sottotipi di Elenco <Oggetto>.
Se capisco bene questa frase; la differenza tra List<?>
e List<Object>
è che possiamo utilizzare l'argomento tipo List<String>
o List<Integer>
implementando il primo. Mentre se implementiamo la versione successiva, possiamo usare solo l'argomento type List<Object>
. Come se List<?>
sia un limite superiore a Object
ovvero List<? Object>
.
Ma poi la seguente frase mi confonde, nel senso che secondo quanto ho capito in precedenza, List<Object>
dovrebbe contenere solo istanze della classe Object
e non qualcos'altro.
È importante notare che
List<Object>
eList<?>
non corrispondono. È possibile inserire un oggetto o qualsiasi sottotipo di oggetto in unList<Object>
. Ma puoi inserire solonull
in unList<?>
.
Devo andare con "non chiaro cosa stai chiedendo" qui. – Mena
Vuole "una spiegazione aggiuntiva". – ctst
Non sai da dove ricevi le informazioni, ma entrambe le frasi di esempio fornite sono sbagliate. – jervine10