Was passiert während der Serialisierung in Java, wenn zwei References auf dasselbe serialisierbare Objekt zeigen? Werden die serialisierbaren Objekte zweimal gespeichert?
zum Beispiel:Was passiert während der Serialisierung in Java, wenn zwei References auf dasselbe serialisierbare Objekt verweisen?
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();
}
}
}
Nun, ob nur ein Objekt Zustand für beide gespeichert goodKing und badKing refrences oder das Objekt König zweimal gerettet werden?
Haben Sie versucht, die Klasse mit ein und zwei Referenzen zu speichern und die Dateigröße des Ergebnisses verglichen? – Smutje
Versuchen Sie, Königreich zu deserialisieren, und sehen Sie, ob GoodKing und BadKing auf den gleichen König zeigen. Wenn das der Fall ist, genügt es, ein Königreich in Kingdom1.out zu haben, um das Königreich zu deserialisieren. Daraus können wir erraten, dass nur ein Objektstatus gespeichert ist. – fajarkoe
@Smutje Die generierte Datei zeigt immer die Größe 1KB –