Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Problemi Arraylist

    Sto implementando un programma per giocare a scacchi.
    Io mi creo un array con ogni mossa valida(ogni mossa è una classe) e vorrei copiarlo in un Arraylist per poi poterlo gestire.

    Praticamente da una prima analisi l'Arraylist riesco a crearla, ma quando vado a estrarre un elemento non riesco a fargli riconoscere che è un elemento del tipo mossa

    for (i=0;i<j;i++){
    elemento elem=new elemento();
    elem=lista.get(i);
    System.out.println(elem.valutazione);

    }

    Praticamente l'elemento è una classe con all'interno la mossa (la classe elemento contiene un elemento mossa), però al momento di compilare mi da un errore in cui elem viene visto di un tipo incompatibile rispetto a quello che esce dall'arraylist....
    Quindi non riesco poi a stampare...

    Qualcuno può aiutarmi? :master:

    thanks :tongue:

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; il problema è che:
    lista.get(i);
    in realtà restituisce un Object e non un oggetto di tipo elemento; quindi dovresti fare:

    elemento elem = ( elemento )( lista.get( i ) );

    Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Grazie, perfetto !

    Mi potresti spiegare il "perchè" si fa così ?

  4. #4
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; il perchèè semplice; se ci pensi, almeno sino alla versione 1.4.2 dell'sdk ( con l'1.5 ciò dovrebbe essere evitabile ),il metodo get di arraylist restituisce un object ( infatti in Java tutto o quasi si può vedere come un oggetto ); allora che succede, tu carichi il tuo arralist con degli oggetti di tipo elemento però quando vai a prelevare 1 oggetto dall'arraylist riempito tu, che hai implementato il codice, sai che l'arraylst è pieno di oggetti "elemento";il compilatore non sa a priori cosa tu inserirai allora l'implementazione di get è stata fatta il più generica possibile, e cioè restituisce object; ora se è vero che tutto o quasi si può vedere come un object -> che anche elemento si può vedere come object; il problema è che non tutti gli object si possono vedere come elemento -> elemnto el = lista.get( i ); ti da errore perchè tu vuoi un elemento ma in realtà hai un object che non ha tutte le caratteristiche dielemnto; però tu sai con sicurezza che l'oggetto che hai tirato fuori è un element quindi, per restituire ad esso tutte le caratteristiche che ogni istanza di element ha, devi effettuare un casting di oggetti; facendo una cosa del tipo:
    ( element )( lista.get( i ) ) all'oggetto che tiri fuori con lista.get( i ) restituisci tutti i suoi attributi.
    Spero di averti chiarito le idee e non di averti confuso di più.
    Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

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 © 2025 vBulletin Solutions, Inc. All rights reserved.