No, purtroppo sei (molto) fuori strada. Il wildcard (<?> e le versioni "bounded" con super/extends) è stato introdotto nei generics per un motivo ben preciso.
E ... no. Non stavo parlando di fare un "banale" arrObj.addAll(arrString);
Io stavo parlando di assegnabilità!
Tutto nasce dal fatto che in Java questa seguente assegnazione è ok e lecita:
codice:Object[] arr = new String[10];
mentre invece questa assegnazione NON è lecita:
codice:ArrayList<Object> lst = new ArrayList<String>(); // NO, ERRORE
Detto in altro modo:
String[] è un sottotipo di Object[]
ma
ArrayList<String> NON è un sottotipo di ArrayList<Object>
C'è un motivo ben preciso perché il primo è lecito mentre il secondo no. E' proprio la "teoria" di base dei generics.
Se mai ti dovesse interessare, c'è un bellissimo libro (io ce l'ho da molti anni, l'ho studiato tutto): "Java Generics and Collections" della O'Reilly. Ma se fossi interessato, aspetta, non prendere l'edizione originale (del 2006) perché tra poco più di 1 mese (a Maggio) esce la 2° edizione, questa: https://www.oreilly.com/library/view...9781098136710/


): "Java Generics and Collections" della O'Reilly. Ma se fossi interessato, aspetta, non prendere l'edizione originale (del 2006) perché tra poco più di 1 mese (a Maggio) esce la 2° edizione, questa:
Rispondi quotando