Per vari motivi voglio convertire una lista in un array, tuttavia la collezione contiene oggetti che sono generici.Come convertire in modo sicuro da una raccolta di tipi generici a un array?
Ho provato le seguenti quattro opzioni per farlo compilare senza bisogno di un'annotazione @supressWarnings ('deselezionata'), ma nessuna funziona. C'è una soluzione per farlo funzionare correttamente, o sono obbligato a usare l'annotazione?
Iterator<T>[] iterators;
final Collection<Iterator<T>> initIterators = new ArrayList<Iterator<T>>();
// Type safety: Unchecked cast from Iterator[] to Iterator<T>[]
iterators = initIterators.<Iterator<T>>toArray(
(Iterator<T>[])new Iterator[initIterators.size()]);
// Type safety: Unchecked invocation toArray(Iterator[]) of the generic
// method toArray(T[]) of type Collection<Iterator<T>>
// Type safety: The expression of type Iterator[] needs unchecked conversion
// to conform to Iterator<T>[]
iterators = initIterators.<Iterator<T>>toArray(
new Iterator[initIterators.size()]);
// Type safety: The expression of type Iterator[] needs unchecked conversion
// to conform to Iterator<T>[]
iterators = initIterators.toArray(new Iterator[initIterators.size()]);
// Doesn't compile
iterators = initIterators.toArray(new Iterator<T>[initIterators.size()]);
Forse [[questo] (http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html#FAQ104)] aiuterà un po '. Ad ogni modo mi interessa anche perché qualcuno vorrebbe usare gli array (che non supportano i generici) invece di dire ArrayList. – Pshemo
possibile duplicato di [Array of Generic List] (http://stackoverflow.com/questions/7810074/array-of-generic-list). Vedi anche: [Tipi generici in un array per un albero con più di un figlio] (http://stackoverflow.com/questions/15957325/generic-types-in-an-array-for-a-tree-with-more -than-figlio unico). –
@PaulBellora Penso che le domande che elencherai non siano duplicate, sebbene parlino di materiale simile. –