在Java反序列化中,transient关键字用于限制来自用户的数据。如果我们想检索这些数据,那么我们可以使用该变量的默认值,如下所示:
学生.java
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
int id;
String name;
static String college;
transient int age;
public Student(int id,String name,int age) {
this.id=id;
this.name=name;
college="SVS";
this.age=age;
}
}
和反序列化.java
public class Deserialization {
public static void main(String ar[]) throws Exception {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("SerializeOutput.txt"));
Student s = (Student) in.readObject();
Student s1 = (Student) in.readObject();
System.out.println(s.id + " " + s.name+" "+s.age);
System.out.println(s1.id + " " + s1.name+" "+s1.age);
in.close();
}
}
在这里,我有 id
和 name
的原始值,但我得到的 age
值为 0(我知道整数)。
我想检索age
的原始值。
是否可以检索到所需的值?
最佳答案
标记为transient
的成员不会被序列化,因此age
不是对象持久状态的一部分。
当您反序列化时,由于没有为 age
字段保留数据,因此它会获取 Java 的 int
默认值 (0)。
关于java - 如何从 Java 反序列化概念中声明为 transient 的文件中检索成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26465095/