Cosa succede durante la serializzazione in java, se due rifrazioni di oggetti puntano allo stesso oggetto serializzabile? Gli oggetti serializzabili vengono salvati due volte?
ad esempio:Cosa succede durante la serializzazione in java, se due rifrazioni di oggetti puntano allo stesso oggetto serializzabile?
class King implements java.io.Serializable {
private String name="Akbar";
}
class Kingdom implements java.io.Serializable {
King goodKing=new King();
King badKing=goodKing;
}
public class TestSerialization {
public static void serializeObject(String outputFileName,
Object serializableObject) throws IOException {
FileOutputStream fileStream=new FileOutputStream(outputFileName);
ObjectOutputStream outStream=new ObjectOutputStream(fileStream);
outStream.writeObject(serializableObject);
outStream.close();
}
public static void main(String[] args) {
Kingdom kingdom=new Kingdom();
try {
TestSerialization.serializeObject("Kingdom1.out", kingdom);
}catch(IOException ex) {
ex.getMessage();
}
}
}
Ora, se lo stato solo un oggetto viene salvato sia per goodKing e badKing refrences o l'oggetto re vengono salvati due volte?
Hai provato a salvare la classe con uno e due riferimenti e confrontato la dimensione del file del risultato? – Smutje
Prova a deserializzare Kingdom e vedi se goodKing e badKing puntano allo stesso King. Se lo sono, quindi avere un Re in Kingdom1.out è sufficiente deserializzare il Regno. Da ciò, possiamo supporre che sia stato salvato solo uno stato dell'oggetto. – fajarkoe
@Smutje Il file generato mostra sempre di essere di dimensione 1KB –