"Здравей, Амиго! Бих искал да ти кажа още една малка подробност за сериализацията."
Да предположим, че нашият клас съдържа препратка към няHowъв InputStream . Тогава не може да се сериализира, нали?
„Точно. Вие самият казахте, че потоците не могат да бъдат сериализирани. И не можете да сериализирате обект, който има данни, които не могат да бъдат сериализирани.“
„Точно. Точно така. Но Howво ще стане, ако класът съхранява данни, които не играят съществена роля в неговото състояние и въпреки това не позволява класът да бъде считан за сериализиращ се клас? Няма meaning, че класът може да съхранява ненужни неща. Може да хвърли това данни по всяко време и може би дори го прави - през цялото време."
За тези случаи създателите на Java измислиха преходната ключова дума. Ако напишем тази ключова дума преди членска променлива, тогава тя ще бъде игнорирана по време на сериализацията. Състоянието му няма да бъде запазено or реконструирано. Сякаш не съществуваше. Това е точно за ситуациите, които току-що разгледахме.
Помните ли кеширането и модификатора volatile ? Няма правила без изключения .
Ето един такъв пример за това щастие:
Пример за „котка“ с променлива, която е невидима за сериализация:
class Cat implements Serializable
{
public String name;
public int age;
public int weight;
transient public InputStream in = System.in;
}
GO TO FULL VERSION