Java transient关键字

Java瞬态关键字在序列化中使用。如果将任何数据成员定义为瞬态, 则不会序列化。
让我们举个例子, 我已经将一个类声明为Student, 它具有三个数据成员ID, 名称和年龄。如果你序列化该对象, 则所有值都将被序列化, 但是我不想序列化一个值, 例如年龄, 然后我们可以将年龄数据成员声明为瞬态。
Java瞬态关键字示例
在此示例中, 我们创建了两个类Student和PersistExample。 Student类的age数据成员被声明为瞬态的, 其值将不会序列化。
如果反序列化对象, 则将获得瞬态变量的默认值。
让我们创建一个带有瞬态变量的类。

import java.io.Serializable; public class Student implements Serializable{ int id; String name; transient int age; //Now it will not be serialized public Student(int id, String name, int age) { this.id = id; this.name = name; this.age=age; } }

现在编写代码以序列化对象。
import java.io.*; class PersistExample{ public static void main(String args[])throws Exception{ Student s1 =new Student(211, "ravi", 22); //creating object //writing object into file FileOutputStream f=new FileOutputStream("f.txt"); ObjectOutputStream out=new ObjectOutputStream(f); out.writeObject(s1); out.flush(); out.close(); f.close(); System.out.println("success"); } }

输出:
success

现在编写反序列化代码。
import java.io.*; class DePersist{ public static void main(String args[])throws Exception{ ObjectInputStream in=new ObjectInputStream(new FileInputStream("f.txt")); Student s=(Student)in.readObject(); System.out.println(s.id+" "+s.name+" "+s.age); in.close(); } }

211 ravi 0

【Java transient关键字】如你所见, 由于年龄值未序列化, 因此学生的打印年龄返回0。

    推荐阅读