transient
می خواهیم «کلیدواژه transient در جاوا» را خیلی ساده ببینیم. «کلیدواژه (Keyword)» یعنی واژه دستوری برای کامپایلر. transient یعنی «این ویژگی را هنگام سریال سازی ذخیره نکن».
تعریف و کاربرد transient
طبق منبع، transient یک «تعدیل گر (Modifier)» برای ویژگی هاست. این علامت می گوید جاوا هنگام «سریال سازی (Serialization)» این ویژگی را نادیده بگیرد. بنابراین مقدارش ذخیره نمی شود.
نمونه کد: جلوگیری از ذخیره accessCode
در این مثال، ویژگی accessCode با transient ذخیره نمی شود. پس پس از سریال سازی و برعکس سازی، مقدارش صفر می ماند.
import java.io.*;
public class Main {
public static void main(String[] args) {
Person person = new Person();
person.fname = "John";
person.lname = "Doe";
person.age = 24;
person.accessCode = 5044;
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
ObjectOutputStream objOut = new ObjectOutputStream(output);
objOut.writeObject(person);
} catch (IOException e) {
}
Person person2 = new Person();
try {
ObjectInputStream objIn = new ObjectInputStream(new ByteArrayInputStream(output.toByteArray()));
person2 = (Person) objIn.readObject();
} catch (Exception e) {
}
System.out.println("First name: " + person2.fname);
System.out.println("Last name: " + person2.lname);
System.out.println("Age: " + person2.age);
System.out.println("Access code: " + person2.accessCode);
}
}
class Person implements Serializable {
String fname = "John";
String lname = "Doe";
int age = 24;
transient int accessCode = 0;
}
تمرین مرحله ای
- کلاس Person را اجرا کن.
- مقدار accessCode را تغییر بده.
- برنامه را اجرا کن و خروجی accessCode را ببین.
نکته: transient فقط روی «ویژگی ها» اثر دارد و هنگام سریال سازی آن ها را نادیده می گیرد.
کلیدواژه transient را به عنوان مرجع سریع نگه دار.
آشنایی با Modifiers در جاوا را هم مرور کن.
جمع بندی سریع
- transient یعنی ذخیره نشدن ویژگی.
- هنگام سریال سازی اثر می گذارد.
- فقط روی ویژگی ها اعمال می شود.
- برای داده های حساس، مفید است.