Что происходит во время сериализации в java, если два объекта refrences указывают на один и тот же сериализуемый объект? Сохраняет ли Serializable Objects дважды?
, например:Что происходит во время сериализации в java, если два объекта refrences указывают на один и тот же сериализуемый объект?
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();
}
}
}
Теперь, будь то сохраняется состояние только один объект для обоих goodKing и badKing refrences или объект King спасаются дважды?
Вы пытались сохранить класс с одной и двумя ссылками и сравнили размер файла результата? – Smutje
Попытайтесь десериализовать Королевство и посмотрите, есть ли goodKing и badKing для одного и того же Короля. Если они есть, то, имея одного Короля в Царстве, достаточно сделать десериализацию Царства. Из этого можно предположить, что сохраняется только одно состояние объекта. – fajarkoe
@Smutje Сгенерированный файл всегда показывает размер 1KB –