Powiedzmy, że mam w pamięci tablicę arr
obiektów typu A
, z których każda ma pole odniesienia wskazujące na ten sam obiekt, B
.Serializacja Java, Kryo i wykres obiektów
Ilustracja:
A_1 A_2 A_3 ... A_N
| | | |
| | V |
\--->\--> B <-----/
Zauważ, że pole odniesienia w każdym obiekcie typu A
wskazuje na samym obiektu typu B
.
Teraz szereguję tablicę arr
zawierającą obiekty typu A
z ObjectOutputStream
. Następnie deserializuję bajty uzyskane w ten sposób.
Otrzymuję nową tablicę arr1
.
1) Czy tablica arr1
mieć obiektów typu A
takie, że wszystkie wskazują na samym obiektu typu B
? (Nie mam na myśli tego samego obiektu przed serializacją, ale unikatowym nowo utworzonym obiektem typu) 2) Innymi słowy, czy wywołanie serializacji/deserializacji w Javie zachowuje ten sam wykres obiektów, co przed serializacją? (tzn. nowo zserializowany wykres obiektów jest izomorficzny w stosunku do starego)
3) Gdzie jest to udokumentowane? (proszę podać cytat)
4) Te same pytania 1-3, ale zostały zastosowane do struktury serializacji Kryo dla języka Java.
Dziękuję.
za pośrednictwem tego samego 'ObjectOutputStream' lub dodatkowo przez ten sam wezwaniem' metody writeObject'? – axel22
Tylko przez ten sam strumień; pomyśl o dwóch obiektach, które się nawzajem odwołują. Piszesz pierwszy (a więc i odniesienie do drugiego) do strumienia. Gdy następnie napiszesz drugi do tego samego strumienia, który ma identyfikatory dla obu, odniesienia zostaną udostępnione. –
Dzięki za wspaniałą odpowiedź! – axel22