Dlaczego to musi być przejściowe?
Czyni to, ponieważ zapewnia zwyczaj readObject
i writeObject
metod zrobić lepiej niż serializacji domyślnie. W szczególności metoda writeObject zapisuje tylko rozmiar i sekwencję elementów. Pozwala to uniknąć serializacji obiektu prywatnej tablicy, który 1) ma swój własny nagłówek i narzuty, a 2) jest zwykle wypełniony null
s. Oszczędność miejsca może być znacząca.
(W rzeczywistości, nie sądzę, że pole ściśle potrzebuje być zadeklarowane jako transient
w ogóle, ale to nie pomaga dokumentować intencję autora.)
Dlaczego” t tę klasę można serializować?
Klasa ArrayList
jako całość może być serializowane . Model Object[]
może być serializowany, ale zdecydował się go zaimplementować w inny sposób.
1 - W rzeczywistości zależy to od typów środowiska elementów. Na przykład, jeśli spróbujesz przekształcić do postaci szeregowej ArrayList
zawierający odniesienia Thread
, wówczas otrzymasz wyjątek środowiska wykonawczego dla pierwszego odwołania o wartości innej niż null.