Diciamo che ho una matrice arr
di oggetti di tipo A
in memoria, ognuno dei quali ha un campo di riferimento che punta allo stesso oggetto B
.Serializzazione Java, Kryo e il grafico dell'oggetto
Illustrazione:
A_1 A_2 A_3 ... A_N
| | | |
| | V |
\--->\--> B <-----/
Notare che il campo di riferimento in ogni oggetto di tipo A
punti allo stesso oggetto di tipo B
.
Ora serializzo l'array arr
contenente oggetti di tipo A
in un ObjectOutputStream
. Poi ho deserializzato i byte ottenuti in questo modo.
Ricevo un nuovo array arr1
.
1) Se la matrice arr1
hanno oggetti di tipo A
tale che tutti indicano lo stesso oggetto di tipo B
? (Non intendo lo stesso oggetto prima della serializzazione, ma un oggetto unico di nuova creazione di tipo B
)
2) In altre parole, la chiamata serialize/deserialize in Java conserva lo stesso grafico oggetto che era prima della serializzazione? (cioè il grafo oggetto deserializzato è isomorfo a quello vecchio)
3) Dove è documentato? (per favore, fornire una citazione)
4) Le stesse domande 1-3, ma applicate al framework di serializzazione Kryo per Java.
Grazie.
Attraverso lo stesso 'ObjectOutputStream', o in aggiunta, attraverso la stessa invocazione del metodo' writeObject'? – axel22
Solo attraverso lo stesso flusso; pensa a due oggetti che si riferiscono l'un l'altro. Scrivi il primo (e quindi il riferimento al secondo) al flusso. Quando si scrive il secondo nello stesso flusso, che ha ID per entrambi, i riferimenti vengono condivisi. –
Grazie per l'ottima risposta! – axel22