2010-01-19 20 views
5

Quando definisco un oggetto java per implementare l'interfaccia serializzabile, anche i membri dell'oggetto diventano serializzabili? Oppure devo andare più lontano lungo la profondità di annidamento, per ridefinire ogni oggetto lungo il percorso come serializzabile?Serializzazione in java

+0

controllare questa risposta http://stackoverflow.com/questions/2007134/serialize-objects-containing-objects-java/2007214 Può essere potrebbe aiutare con alcuni dettagli sul processo di serializzazione – JuanZe

risposta

6

La maggior parte delle classi che si utilizzano regolarmente in java sono serializzabili (raccolte, stringhe, decedenti di numero, ecc.), Tuttavia tutte le classi a cui si fa riferimento devono essere serializzabili o dichiarate transitorie. Naturalmente, se sono transitori, non saranno referenziati quando la classe è deserializzata.

+0

E riguardo gli elenchi? –

+0

Gli elenchi sono raccolte. – Joey

+0

Fondamentalmente è lo stesso argomento: le implementazioni JDK standard come ArrayList sono serializzabili di per sé, ma se si tenta di serializzare una che contiene un oggetto non serializzabile, ciò fallirà. –

3

Bene, l'implementazione di Serializable fornirà il supporto per la serializzazione solo se tutti i membri non transitori (grazie, danben) sono o primitivi o classi serializzabili stessi.

Quindi sì, se hai un sacco di cose diverse come membri che sono non serializzabili, quindi devi renderli serializzabili anche tu.

A meno che non siano importanti per rappresentare lo stato dell'oggetto. Se riesci a ricrearlo senza di essi, puoi sempre rendere transitori i membri per ometterli dalla serializzazione.

+2

tutti i non-transitoria membri, credo. – danben

+0

Ah, giusto. È passato un po 'di tempo. – Joey

+0

Il compilatore non controlla questo purtroppo! –

0

I membri non vengono resi automaticamente serializzabili.

Se hai membri che hai nella classe e che hai scritto tu stesso, devi andare a ciascuno e renderli serializzabili (implementando l'interfaccia).

La maggior parte dei tipi forniti con le librerie JAVA è già serializzabile, quindi non dovrebbe infastidirti.

E naturalmente, questo vale per tutti i membri in modo ricorsivo.

In altre parole: se c'è un pezzo di dati o valore che deve essere trasferito o salvato, a qualsiasi profondità all'interno di un oggetto, deve essere serializzabile.

Problemi correlati