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
)。