Deserializzare un oggetto

Da Head First Java O'Reilly, capitolo 14.

Dato un oggetto reso persistente é semplice riportarlo in attività. In pratica si tratta di fare il percorso inverso compiuto nel post precedente.

Useremo un oggetto di tipo FileInputStream per leggere i byte dal file, trasformeremo i byte in oggetto per mezzo di una istanza della classe ObjectInputStream e quindi lo "leggiamo" in un oggetto. Nota che, nel processo, l'oggetto é riportato al suo stato salvato, non viene quindi invocato il suo costruttore, dato che ciò lo porterebbe al suo stato iniziale. D'altra parte, se nella gerarchia della classe dell'oggetto serializzato c'é uno o più ascendenti non serializzabili, il costruttore é chiamato per il più esterno di essi e da quel punto in poi l'oggetto e inizializzato usando gli specifici costruttori. Le eventuali componenti transienti di un oggetto serializzato vengono inizializzate con il valore di default corrispondente (gli oggetti vengono messi a null).

A seguire un semplice deserializzatore per l'oggetto Box che abbiamo serializzato nel post precedente:

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class BoxGetter {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("box.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
Box myBox = (Box) ois.readObject();
ois.close();

System.out.println("My box is: " + myBox.toString());

} catch(Exception ex) {
ex.printStackTrace();
}
}
}

Nessun commento:

Posta un commento