Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Array Cast

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    Array Cast

    ciao a tutti,
    vorrei capire perché in Java non si possono castare gli array, o così ho capito navigando su internet.
    Perché questo genera un'eccezione di tipo ClassQualcosaException?

    ArrayList<MiaClassse> a = new ArrayList<MiaClasse>();
    ....
    MiaClasse [] b = (MiaClasse[]) a.toArray();

    e devo sfortunatamente usare l'altro metodo toArray?
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Array Cast

    Originariamente inviato da Hysoka
    > a = new ArrayList<MiaClasse>();
    ....
    MiaClasse [] b = (MiaClasse[]) a.toArray();
    Ricordati che i generics sono implementati tramite "erasure"... a runtime all'interno del tuo oggetto ArrayList non c'è scritto da nessuna parte che è di tipo MiaClassse. Visto che usi il toArray() senza argomenti .... ArrayList non saprebbe come creare un array del tipo esatto (MiaClasse[]) e quindi istanzia un array Object[]. Il cast è legale ma è chiaro che se l'array è davvero un Object[] non può essere un MiaClasse[]!!!

    Originariamente inviato da Hysoka
    e devo sfortunatamente usare l'altro metodo toArray?
    Appunto ... devi usare l'altro se vuoi averlo del tipo specifico.
    Un po' come si dice "per fare soldi devi avere già soldi" ... idem per toArray(), se vuoi avere da toArray() un array di un certo tipo, devi passargliene uno di quel tipo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.