Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    39

    problema con la serializzazione

    Salve Ragazzi ho un problema con la Serializzazione, ho creato una classe Oggetto che implementa serializable che al suo interno contiene una lista di carte dove la carta è a sua volta serializabile, se deserializzo con objectOutpustream e faccio il cast mi da classcastexception, se invece serializzo e deserializzo la lista di carte senza utilizzare la Classe Oggetto non mi da nessun errore perchè?l'intenzione e quella di salvare tutte le liste e altri vari parametri booleani e stringe in un oggetto serializzabile però non capisco perchè mi da class cast exception, da che dipende?
    codice:
    Oggetto ods=new Oggetto(carteMazzo);
                    scrivi(ods);
                                    leggi();
    public class Oggetto implements Serializable{
        private LinkedList<Carta> carte;
         public Oggetto(LinkedList<Carta> carte){
               this.carte=carte;
           }
         public LinkedList<Carta> getCarte() {
                return carte;
            }
    
    
    }
     public void leggi(){
            ObjectInputStream ois=null;
            try {
                ois=new ObjectInputStream(new FileInputStream("txt/dati.dat"));
            }catch(FileNotFoundException f){
                System.out.println("file non trovato");
            }catch(IOException e) {}
            LinkedList<Carta> corrente=null;
            try{
                corrente=(LinkedList<Carta>) ois.readObject();
            }catch(FileNotFoundException f){
                  System.out.println("file non trovato");
              }catch(IOException e) {} 
            catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            System.out.println(corrente.toString());
            
        }
              public void scrivi(LinkedList<Carta>ods){
                  FileOutputStream fout=null;
                  ObjectOutputStream out=null;
    
    
                  try {
                  fout=new FileOutputStream("txt/dati.dat");
                  }
                  catch(IOException e) {}
    
    
    
    
    
    
                  try {
                  out=new ObjectOutputStream(fout);
                 
                 
                  
                  }
                  catch(FileNotFoundException f){
                      System.out.println("file non trovato");
                  }
                  catch(IOException e) {}
                  try {
                      
                     
                      out.writeObject(ods);
                      
                      }
                      catch(IOException e) {}
                  try {
                      out.close();
                     
                      
                      }
                      catch(IOException e) {}
    
    
              }
    Ultima modifica di breathex; 23-06-2017 a 23:21

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    39
    ho risolto dovevo castizzare l'oggetto e non la lista

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    39
    Scusate un altra domanda, è possibile salvare un thread in memoria? Ho un thread giocatorePc e mi servirebbe salvare la partita compreso il thread, pero un thread non è serializzabile, se implemento i metodi personalizzati writeObject e readObject e inserisco il thread dovrebbe funzionare o mi da NotSerializableexception?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da breathex Visualizza il messaggio
    è possibile salvare un thread in memoria? Ho un thread giocatorePc e mi servirebbe salvare la partita compreso il thread, pero un thread non è serializzabile
    Non ha assolutamente senso. Un thread è un "flusso di esecuzione", non è qualcosa che puoi salvare o memorizzare da qualche parte.
    Mentre un oggetto java.lang.Thread è solo il contenitore di una serie di informazioni e nozioni su quel flusso di esecuzione che esiste in quel preciso momento e in quella precisa esecuzione della JVM. Quindi no, non si può.

    Quello che devi salvare è lo "stato" del gioco: giocatori (loro nomi ecc..), punteggi, dislocazione di pedine, elementi, ecc... e quant'altro.
    A livello pratico servirebbe una singola classe la cui istanza rappresenta lo stato complessivo del gioco. E questa puoi certamente renderla Serializable e quindi (de)serializzarla.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    39
    Grazie

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