Visualizzazione dei risultati da 1 a 10 su 10

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    42

    [JAVA] ArrayList Vuote quando deserializzo oggetto

    Nel mio codice ho una classe Database che contiene 2 arraylist di oggetti motore e componenti.
    Quando creo un oggetto di tipo Database e lo serializzano su un file, al momento deserializzazione Le arraylist sono vuote (Se inserirsi altri attributi questi verrebbero
    deserializzati correttamente). Se invece provo a serializzare Un arraylist Al momento della deserializzazione Questa contiene effettivamente gli oggetti aggiunti.
    In entrambi i casi le arraylist vengono correttamente riempite, infatti si approva stampare un elenco degli oggetti contenuti questo ritorna esattamente questi ultimi.
    Vi scrivo un po' di codice

    codice:
    public class Database implements Serializable {
    
    
        private static final long serialVersionUID = 1L;
        
         static final String nomefile = "save.s"; 
        
    
    
        static String S = "stringa prova";
         static ArrayList<Motore> motori=new ArrayList <Motore>();
         static ArrayList<Componente> componenti= new ArrayList<Componente> ();
    
    public  void save() {
             
            
            FileOutputStream fos=null;
            ObjectOutputStream oos=null;
            try {
                fos = new FileOutputStream(nomefile);
                oos = new ObjectOutputStream(fos);
                oos.writeObject(this);
                
                
                System.out.println("database correttamente salvato.");
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            finally
            {
                try{
                    if (oos != null)
                        oos.flush();
                        oos.close();
                    if (fos != null)
                        fos.close();
                }
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
    public static Database load() throws IOException {
            FileInputStream fis = null;
            ObjectInputStream ois = null;
            Database db = null;
    
    
    
    
            try {
                
                fis = new FileInputStream(nomefile);
                ois = new ObjectInputStream(fis);
                db = (Database) ois.readObject();
                
                return db;
            } catch (ClassNotFoundException | IOException e) {
                e.printStackTrace();
            }
            finally
            {
                if (ois != null)
                    ois.close();
                if (fis != null)
                    fis.close();
                
            }
            return db;
                
            
        }
    }
    Due classi distinte Componente e Motore Praticamente uguali (per farvi capire, in realtà sono diverse)
    codice:
    public class Componente/Motore implements Serializable {
        
        private String nome;        
                
        public Componente/Motore(String nomef){
            this.nome = nome;
            Database.componenti/motori.add(this);
    
    
        }
    }
    codice:
    public class Test{
        private static Database database ;
    
            Motore M1 = new Motore("motore1");
            Motore M2 = new Motore("motore2");
            Componente C1 = new Componente("componente1");
            Componente C2 = new Componente("componente2");
            Componente C3 = new Componente("componente3");
            Componente C4 = new Componente("componente4");
    
            database.save();
    }
    Ora, se provo a scrivere

    codice:
    public class Test{
        private static Database database ;
    
        /*    Motore M1 = new Motore("motore1");
         *    Motore M2 = new Motore("motore2");
         *    Componente C1 = new Componente("componente1");
         *    Componente C2 = new Componente("componente2");
         *    Componente C3 = new Componente("componente3");
         *    Componente C4 = new Componente("componente4");
    
         *    database.save();
         */    Database.load();
    
    
    }
    Le arraylist sono vuote ma la String "stringa prova" è stata deserializzata correttamente...
    Ci sto sbattendo la testa da una settimana, non capisco proprio...

    Spero possiate aiutarmi
    Ultima modifica di MBdip; 28-04-2014 a 11:03

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.