Omid Zakeri

Transient در اندروید

1 ارسال در این موضوع قرار دارد

transient  چیست؟

برای اینکه یک متغیر در عملیات serialization  تبدیل و ارسال نشود آن را با کلمه کلیدی transient تعریف میکنند.

عملیات Serialization  چیست؟

وقتی قرار است کلاس ها در شبکه فرستاده شوند (مثلا در RMI) داده ها بصورت سریالی از بایت ها ارسال شده و دوباره در مقصد به شکل اول ساخته می شوند. به این عملیات Serialization می گویند و کلاس های مربوطه باید رابط Serializable را پیاده سازی کنند.

کاربرد transient در زمینه Serialization می باشد و به این معنی هست که فیلد مورد نظر در عمل Serialization استفاده نشود، فیلد هایی رو transient می کنند که نمی خواهند آن ها را نگهداری کنند یا در انتقال شی ها در شبکه نیازی به انتقال اطلاعات آن ها نیست. مثلا اگر شما وضعیت لحظه ایه یک فرآیند را در یک فیلدی از یک شی نگهداری کنید در موقع ثبت و Serialization ممکن است دوست نداشته باشید آن فیلد را نگهداری کنید چون همیشه در زمان اجرا محاسبه میشود.

 

public class Student implements Serializable{  
 int id;  
 String name;  
 transient int age;//Now it will not be serialized  
 public Student(int id, String name,int age) {  
  this.id = id;  
  this.name = name;  
  this.age=age;  
 }  
}  
class PersistExample{  
 public static void main(String args[])throws Exception{  
  Student s1 =new Student(211,"omid",26);//creating object  
  //writing object into file  
  FileOutputStream f=new FileOutputStream("f.txt");  
  ObjectOutputStream out=new ObjectOutputStream(f);  
  out.writeObject(s1);  
  out.flush();  
  
  out.close();  
  f.close();  
  System.out.println("success");  
 }  
}

    Output:

 

class DePersist{  
 public static void main(String args[])throws Exception{  
  ObjectInputStream in=new ObjectInputStream(new FileInputStream("f.txt"));  
  Student s=(Student)in.readObject();  
  System.out.println(s.id+" "+s.name+" "+s.age);  
  in.close();  
 }  
}  

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری