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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP