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.append("Имя:" + "\n");
      sb.append(this.name + "\n");
      sb.append("Возраст:" + "\n");
      sb.append(this.age + "\n");
      sb.append("Профессия:" + "\n");
      sb.append(this.occupation);
      return sb.toString();
   }
}
// класс main
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
Профессия:
Java разработчик
Вам может понравиться