— Salam, Amigo! Serializasiya ilə bağlı kiçik bir əlavəni sənə danışmaq istəyirdim.
Tutaq ki, bizim sinifdə hansısa bir InputStream əlaqəsi var, onda onu serializasiya etmək olmaz, elə deyilmi?
— Bəli. Axı sən özün demişdin ki, axınlar serializasiya edilə bilmir. Serializasiya edilə bilməyən məlumatlara sahib olan bir obyekt də serializasiya oluna bilməz.
— Bəli. Elədir. Amma sinifdə onun vəziyyətində əhəmiyyətli rolu olmayan, lakin onun serializasiya ediləbilən sinif kimi qəbul edilməsinə mane olan məlumatlar varsa necə? Sinifdə lazım olmayan şeyləri saxlaya bilər, bəlkə də həmin məlumatları istənilən vaxt atmaq olar və ya hətta belə edir.
Belə hallar üçün Java proqramçıları xüsusi bir söz uydurublar - transient. Bunu sinif dəyişəninin önünə yaza bilərsən və o, serializasiya zamanı nəzərə alınmaz. Onun vəziyyəti saxlanılmayacaq və bərpa olunmayacaq. Elə bil ki, ümumiyyətlə yoxdur. Bizim az öncə baxdığımız hallar üçün məhz belədir.
Keşləşmə və volatile modifikatorunu xatırlayırsan? Qaydaları pozan hallar olmadan qayda olmaz.
Sənə belə bir xoşbəxtlik nümunəsi:
Serializasiya üçün görünməz dəyişən — in ilə olan «pişik» nümunəsi:
class Cat implements Serializable
{
public String name;
public int age;
public int weight;
transient public InputStream in = System.in;
}
GO TO FULL VERSION