Сериализация Java создает дубликаты?Если это так, то это мелкий дубликат или глубокий дубликат?
У меня есть несколько классов со следующей настройкой:
public class A{
public C c;
}
public class B {
public C c;
}
public class C implements Serializable {
...
}
public class Wrapper implements Serializable {
public C c;
}
У меня есть компонент, который передает объекты байтовыми массивами, и как толькопроцесс сериализации завершен, ObjectOutputStream / ObjectInputStream будет закрыт.
Сначала я сериализовал Ac и передал его в Bc Является ли Bc дублированием Ac?Затем я создал класс-обертку в B и обернул Bc.Теперь, если я сериализую экземпляр оболочки, передам его в A и десериализую в A, что будет с оболочкой?Ссылка на Bc?Или совершенно новый экземпляр C?
Pesudo code:
{
...
A a = new A();
B b = new B();
C c = new C();
a.c = c;
}
{
//Somewhere in A
byte[] cData = SomethingThatSerializesObjects.Serialize(c);
b.c = SomethingThatSerializesObjects.Deserialize(cData);
//Is b.c a duplication of a.c?
}
{
//Somewhere in B
Wrapper wrapper = new Wrapper();
wrapper.c = c;
byte[] wrapperData = SomethingThatSerializesObjects.Serialize(wrapper);
//Give the wrapperData to a
}
{
//And somewhere in A
//Receives wrapperData
Wrapper wrapper = SomethingThatSerializesObjects.Deserialize(wrapperData);
C tmp = wrapper.c;
//Is tmp a reference to b.c? Or a new C instance?
}