Modifikator transient

All lectures for UZ purposes
Daraja, Dars
Mavjud

— Salom, Amigo! Senga serializatsiyaga bir kichik qo'shimcha haqida gaplashmoqchi edim.

Aytaylik, bizning sinfda qandaydir InputStream ga ishora mavjud bo'lsa, uni serializatsiya qilib bo'lmaydi, shundaymi?

— Ha. Sen o'zing aytganding, oqimlarni serializatsiya qilib bo'lmaydi. Va serializatsiya qilinmaydigan ma'lumotlarga ega ob'ektni serializatsiya qilish ham mumkin emas.

— Xuddi shunday. Lekin, agar sinfda uning holatiga ahamiyat bermaydigan, lekin uni serializatsiya qilinadigan sinf deb bo'lmaydigan ma'lumotlar mavjud bo'lsa-chi? Kim biladi, sinf o'zida nima saqlashi mumkin. Ehtimol, u ushbu ma'lumotlarni istalgan vaqtda tashlab yuborishi yoki hatto doimiy ravishda shunday qilishi mumkin.

Bunday holatlar uchun Java ishlab chiquvchilari maxsus so'zni yaratdilar - transient. Uni sinf o'zgaruvchisi oldida yozish mumkin, va u serializatsiya paytida inobatga olinmaydi. Uning holatini saqlash yoki qayta tiklash mumkin bo'lmaydi. Go'yo u hech qachon bo'lmaganday. Biz faqat ko'rib chiqayotganimizdek, bunday vaziyatlar uchun.

Keshlash va volatile modifikatorini eslaysizmi? Hech bir qoidalar istisnolarsiz bo'lmaydi.

Senga bir misolcha: serializatsiya uchun ko'rinmas o'zgaruvchisi — in bo'lgan “mushuk”:

Kod
class Cat implements Serializable
{
 public String name;
 public int age;
 public int weight;

 transient public InputStream in = System.in; 
}
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION