Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: serializzazione

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93

    serializzazione

    ciao ragazzi sono ancora io
    sto affrontando le serializzazioni e c'è un concetto che mi sfugge:
    ho una classe PIPPO che contiene 4 campi di tipo primitivo e 2 campi di tipo hashmap inizializzati riempiti con altri oggetti.
    ora quando vado a serializzare col semplice writeobject mi salva solo lo stato di biblioteca e non quello delle due hashmap...ok che questo è ovvio ma come posso fare a salvare lo stato delle 2 mappe e dei corrispondenti oggetti al loro interno in modo che quando carico il file ho di nuovo PIPPO con tutti i campi e le hashmap piene al completo?
    suppongo di dover ridefinire write-readobject,ma come?

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

    Re: serializzazione

    Originariamente inviato da ratal
    ho una classe PIPPO che contiene 4 campi di tipo primitivo e 2 campi di tipo hashmap inizializzati riempiti con altri oggetti.
    ora quando vado a serializzare col semplice writeobject mi salva solo lo stato di biblioteca e non quello delle due hashmap...
    Le collezioni, in generale, tecnicamente sono serializzabili ma affinché sia davvero possibile serializzare la collezione, il suo contenuto deve essere altrettanto serializzabile! Quindi nella tua map le chiavi e i valori di che tipo sono??
    Se sono di una TuaClasse, allora è chiaro che questa classe deve essere serializzabile.

    Originariamente inviato da ratal
    suppongo di dover ridefinire write-readobject,ma come?
    Dipende ... non è detto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    grazie andbin disponibile come sempre!
    dunque sono entrambe chiave int e valore una PLUTO e l'altra PAPERINO (cioè due mie classi diverse).come mi consigli di procedere?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ratal
    dunque sono entrambe chiave int
    Integer chiaramente, non il tipo primitivo.

    Originariamente inviato da ratal
    e valore una PLUTO e l'altra PAPERINO (cioè due mie classi diverse).
    Allora queste due classi devono essere marcate Serializable. Ma bisogna prima vedere bene come sono fatte, intendo dire quali campi hanno e di che tipo. Ci sono dei campi che sono di una tua altra classe? Allora anche quell'altra classe dovrebbe essere serializzabile.
    Le due classi che hai menzionato, da quale classe derivano? Da Object o da un'altra tua classe? Anche questo è importante.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    si scusa volevo dire integer...
    allora facciamo che uso nomi veri cosi'capisci meglio:
    una hash è composta da valori di una classe singola con solo campi primitivi,l'altra è fatta da oggetti Veicolo estesi da Motorizzati estesa a sua volta da Auto e Moto (gli oggetti nella hash sono tutti Veicolo di tipo statico ma istanze o di aiuto o di moto).in tutte ci sono campi di tipo primitivo e qualche enum.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ratal
    una hash è composta da valori di una classe singola con solo campi primitivi
    Per il suo stato composto solo di tipi primitivi, allora non ci sono problemi. Ma come superclasse?

    Originariamente inviato da ratal
    l'altra è fatta da oggetti Veicolo estesi da Motorizzati estesa a sua volta da Auto e Moto (gli oggetti nella hash sono tutti Veicolo di tipo statico ma istanze o di aiuto o di moto).in tutte ci sono campi di tipo primitivo e qualche enum.
    Quindi è così?

    codice:
    Motorizzati
         |
      Veicolo
       /   \
    Auto   Moto
    Motorizzati ha uno "stato"? Puoi renderla Serializable?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    allora per quanto riguarda la prima non ha alcuna superclasse,è una semplice classe Utente senza alcuna dipendenza

    per quanto riguarda la seconda il tuo schema va bene...cosa intendi per "motorizzati ha uno stato?".posso dirti che motorizzati ha dei campi che vengono inizializzati ogni volta che si lancia un costruttore auto o moto (ovviamente ripercorrendo la gerarchia con super()) se è questo che vuoi sapere...

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ratal
    allora per quanto riguarda la prima non ha alcuna superclasse,è una semplice classe Utente senza alcuna dipendenza
    Allora questa prima classe marcala Serializable e dovresti essere a posto.

    Originariamente inviato da ratal
    cosa intendi per "motorizzati ha uno stato?".
    I suoi campi di istanza.

    Originariamente inviato da ratal
    posso dirti che motorizzati ha dei campi che vengono inizializzati ogni volta che si lancia un costruttore auto o moto (ovviamente ripercorrendo la gerarchia con super()) se è questo che vuoi sapere...
    Per non farla lunga: marca la classe base di tutta la tua gerarchia (Motorizzati) con Serializable e vedi se è ok la (de)serializzazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    niente ho provato a fare come dici tu ma mi salva solo lo stato della classe principale,non quello delle due hashmap.
    sei sicuro che nn saltiamo qualche procedimento?
    ti ricordo che io faccio solo il write object dell'oggetto principale e l'ho messo in un metodo "Salva" della classe dell'oggetto stesso utilizzando il costrutto this...

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    ragazzi niente da fare nn ci riesco.ma siamo sicuri che nn devo andare a ridefinire write/Read object?
    è strano perchè se vado a vedere il file dentro ci sono i nomi dei campi delle classi utente,motorizzati ecc. coi corrispettivi valori di fianco...ripeto che deserializza perfettamente la classe principale in cui è sono definiti write/readObject ma nn legge le hashmap.
    ecco il codice dei due metodi

    public void SalvaConc(FileOutputStream sav){
    ObjectOutputStream out=null;
    try{
    out=new ObjectOutputStream(sav);
    }
    catch (IOException ex){}
    try{
    out.writeObject(this);
    out.flush();
    out.close();
    sav.close();
    }
    catch (IOException ex){}
    }
    public Concessionario CaricaConc(FileInputStream load){
    Concessionario ret=null;
    ObjectInputStream in=null;
    try{
    in=new ObjectInputStream(load);
    }
    catch (IOException ex){}
    try{
    ret=(Concessionario)in.readObject();
    in.close();
    }
    catch (InvalidClassException ex1){}
    catch (IOException ex2){}
    catch (ClassNotFoundException ex3){}
    return ret;
    }

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.