In che senso? Scusa ma non ho capito quale è il problema che ti poni.Originariamente inviato da Kaamos
Quindi per il momento non sembra esserci via d'uscita (non che sia importante), a quanto ho capito se Array.newInstance() fosse implementato diversamente si potrebbe fare ma per ora no...
Se la TuaClasse<T> ha un List<T> dentro e vuoi fornire all'esterno un array T[] di quella lista allora la cosa più banale e diretta è quella di offrire un metodo (chiamalo come vuoi) per ottenere l'array T[] e al suo interno invocare il toArray del List. Naturalmente il tuo metodo riceve un T[] esattamente come fa toArray. Né più né meno.
Se devi fare/offrire qualcosa di specifico oppure se non hai un List<T> ma qualcos'altro (e che magari non ha nemmeno un toArray o simile), allora sì, ti tocca vedere un po' più da vicino la "reflection" (ma nemmeno più di tanto).
Da Java 6 comunque la classe di utility java.util.Arrays ha dei comodi metodi copyOf. Il copyOf tra l'altro (sempre da Java 6) è proprio il metodo usato nel toArray ad esempio di ArrayList.
Per versioni pre-Java 6, purtroppo c'è da usare direttamente java.lang.reflect.Array ma c'è da usare poi solo 1 metodo oltretutto statico (il newInstance).

Rispondi quotando