Java 中的瞬時變數為何不能被序列化?


序列化是一個將 Java 物件以位元組序列形式持久化的過程,其中包括物件的 data 及其型別以及儲存在物件中的資料型別的資訊。序列化是 Java 物件的值/狀態轉換為位元組以透過網路傳送或儲存它。另一方面,反序列化是將位元組碼轉換為相應的 Java 物件的過程。

Transient變數是一個其值在序列化過程中不被序列化的變數。當我們反序列化它時,將獲得此變數的預設值

語法

private transient <member-variable>;

示例

import java.io.*;
class EmpInfo implements Serializable {
   String name;
   private transient int age;
   String occupation;
   public EmpInfo(String name, int age, String occupation) {
      this.name = name;
      this.age = age;
      this.occupation = occupation;
   }
   public String toString() {
      StringBuffer sb = new StringBuffer();
      sb.app*end("Name:"+"\n");
      sb.append(this.name+"\n");
      sb.append("Age:"+ "\n");
      sb.append(this.age + "\n");
      sb.append("Occupation:" + "\n");
      sb.append(this.occupation);
      return sb.toString();
   }
}
// main class
public class TransientVarTest {
   public static void main(String args[]) throws Exception {
      EmpInfo empInfo = new EmpInfo("Adithya", 30, "Java Developer");
      ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("empInfo"));
      oos.writeObject(empInfo);
      oos.close();
      ObjectInputStream ois = new ObjectInputStream(new FileInputStream("empInfo"));
      EmpInfo empInfo1 = (EmpInfo)ois.readObject();
      System.out.println(empInfo1);
   }
}

輸出

Name:
Adithya
Age:
0
Occupation:
Java Developer

更新於: 11-Feb-2020

681 人瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.