English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java에서 시리얼라이제이션의 순간 변수는 왜 없나요?

시리얼라이즈는 Java 객체를 바이트 시리얼을 형태로 영구화하는 과정입니다. 이 바이트 시리얼은 객체의 데이터와 객체의 타입 및 저장된 데이터 타입에 대한 정보를 포함하고 있습니다. 시리얼라이즈는 Java 객체의 값/상태를 바이트 코드로 변환하여 네트워크를 통해 전송하거나 저장합니다. 반대로 역시리얼라이즈는 바이트 코드를 해당 Java 객체로 변환하는 것입니다.

瞬时변수는 시리얼라이즈 과정에서 시리얼라이즈되지 않은 변수입니다. 이 변수를 역시리얼라이즈할 때, 기본값을 얻게 됩니다.

문법

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("이름:");+"\n");
      sb.append(this.name+"\n");
      sb.append("연령:");+ "\n");
      sb.append(this.age + "\n");
      sb.append("직업:"); + "\n");
      sb.append(this.occupation);
      return sb.toString();
   }
}
// 메인 클래스
public class TransientVarTest {
   public static void main(String args[]) throws Exception {
      EmpInfo empInfo = new EmpInfo("Adithya", 30, "Java 개발자");
      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);
   }
}

출력 결과

이름:
Adithya 연령:
0 직업:
Java 개발자