¿Por qué tiene que ser transitorio?
Para ello, ya que proporciona la costumbre readObject
y writeObject
métodos que hacen un mejor trabajo de serialización de la predeterminada. Específicamente, el método writeObject escribe solo el tamaño y la secuencia de elementos. Esto evita serializar el objeto de matriz privado que 1) tiene su propio encabezado y gastos generales, y 2) generalmente está rellenado con null
s. El ahorro de espacio puede ser significativo.
(De hecho, no creo que el campo estrictamente necesita ser declarado como transient
en absoluto, pero sí ayuda a documentar la intención del desarrollador.)
Por qué puede' ¿Esta clase debe ser serializada?
La clase ArrayList
como un todo se puede serializar . El Object[]
podría ser serializado, pero eligieron implementarlo de otra manera.
1 - En realidad, esto depende de los tipos de tiempo de ejecución de los elementos. Por ejemplo, si intentó serializar un ArrayList
que contiene referencias Thread
, entonces obtendría una excepción de tiempo de ejecución para la primera referencia no nula.