Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    18

    serializzazione di un oggetto contenente altri oggetti

    Un modo per garantire la persistenza degli oggetti o per trasferirli tramite socket consiste nel dichiarare che implementano l'interfaccia java.io.Serializable.

    Supponiamo di avere le seguenti classi...
    codice:
    class Edificio {
        private Luogo luogo;
        private int piani;
        ...
    }
    class Luogo {
        private String via;
        private int numero;
        private String citta;
        private String provincia;
        private String nazione;
        ...
    }
    Se voglio che la classe Edificio sia serializzabile, allora devo scrivere class Edificio implements java.io.Serializable. Ma, così facendo, automaticamente verrà serializzata correttamente anche la classe Luogo? Oppure se voglio che una classe sia serializzabile, devo aggiungere implements java.io.Serializable alla classe di mio interesse ed alle classi da me definite (user-defined) all'interno di questa?

    Grazie in anticipo!!!

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

    Re: serializzazione di un oggetto contenente altri oggetti

    Originariamente inviato da enzom83
    Se voglio che la classe Edificio sia serializzabile, allora devo scrivere class Edificio implements java.io.Serializable. Ma, così facendo, automaticamente verrà serializzata correttamente anche la classe Luogo?
    No e infatti con solo Edificio Serializable non ti funzionerebbe proprio la serializzazione.

    Originariamente inviato da enzom83
    Oppure se voglio che una classe sia serializzabile, devo aggiungere implements java.io.Serializable alla classe di mio interesse ed alle classi da me definite (user-defined) all'interno di questa?
    Anche Luogo deve essere Serializable. A meno che .....

    ... (altro scenario), in Edificio marchi il campo luogo come "transient" (quindi la serializzazione di serie non lo prende in considerazione) e in Edificio implementi dei metodi "privati" speciali readObject e writeObject per fare in modo che sia Edificio a farsi carico di (de)serializzare lo stato dell'oggetto Luogo.

    Ma se puoi rendere Luogo Serializable, meglio.
    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
    Jul 2005
    Messaggi
    18
    Perfetto!
    Adesso mi chiedo: ma quando da un client java invio un oggetto serializzabile (implements Serializable) ad un server java tramite socket, cosa succede a basso livello? Il client si accorda col server dicendogli in anticipo quanti byte trasmetterà?

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.