为什么 Java 中的瞬时变量不序列化?
javaobject oriented programmingprogramming更新于 2024/7/26 8:18:00
序列化 是一个将 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