Java transient 关键字
定义和用法
transient 关键字是一个修饰符,用于指示 Java 在序列化对象时忽略某个属性。
相关页面
教程:Java 修饰符
实例
transient 关键字用于防止属性被序列化:
import java.io.*;
public class Main {
public static void main(String[] args) {
Person person = new Person();
person.fname = "Bill";
person.lname = "Gates";
person.age = 19;
person.accessCode = 5044;
// 序列化对象
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
ObjectOutputStream objOut = new ObjectOutputStream(output);
objOut.writeObject(person);
} catch (IOException e) {}
// 反序列化对象
Person person2 = new Person();
try {
ObjectInputStream objIn = new ObjectInputStream(new ByteArrayInputStream(output.toByteArray()));
person2 = (Person) objIn.readObject();
} catch(Exception e) {}
// 打印反序列化后的对象
System.out.println("名字: " + person2.fname);
System.out.println("姓氏: " + person2.lname);
System.out.println("年龄: " + person2.age);
System.out.println("访问代码: " + person2.accessCode); // 此处将打印出 0,因为 accessCode 被标记为 transient,所以未被序列化
}
}
class Person implements Serializable {
String fname = "Bill";
String lname = "Gates";
int age = 19;
transient int accessCode = 0; // 这个属性在序列化时会被忽略
}
在这个例子中,Person 类有一个 transient 修饰的 accessCode 属性。当 Person 对象被序列化时,accessCode 属性不会被包含在序列化数据中。因此,在反序列化后,accessCode 的值将恢复为其默认值(在这个例子中是 0),而不是序列化之前的值(5044)。