Perché questo deve essere transitorio?
Lo fa perché fornisce personalizzati readObject
e writeObject
metodi che fanno un lavoro migliore di serializzazione da quello predefinito. In particolare, il metodo writeObject scrive solo la dimensione e la sequenza di elementi. Questo evita di serializzare l'oggetto array privato che 1) ha la propria intestazione e overheads e 2) è in genere riempito con null
s. Il risparmio di spazio può essere significativo.
(In realtà, non credo che il campo strettamente bisogno da dichiarare secondo quanto transient
a tutti, ma aiuta a documentare l'intento dello sviluppatore.)
Perché può' questa classe può essere serializzata?
La classe ArrayList
nel suo complesso può essere serializzato . Il Object[]
potrebbe essere serializzato, ma hanno scelto di implementarlo in un altro modo.
1 - In realtà, questo dipende tipi di esecuzione degli elementi. Ad esempio, se si tenta di serializzare un ArrayList
contenente i riferimenti Thread
, si otterrà un'eccezione di runtime per il primo riferimento non nullo.
fonte
2012-03-24 00:47:29