Computer >> 컴퓨터 >  >> 프로그램 작성 >> 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("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