gpt4 book ai didi

java - 如何从 Java 反序列化概念中声明为 transient 的文件中检索成员?

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:57 25 4
gpt4 key购买 nike

在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();
}

}

在这里,我有 idname 的原始值,但我得到的 age 值为 0(我知道整数)。

我想检索age的原始值。

是否可以检索到所需的值?

最佳答案

标记为transient的成员不会被序列化,因此age不是对象持久状态的一部分。

当您反序列化时,由于没有为 age 字段保留数据,因此它会获取 Java 的 int 默认值 (0)。

关于java - 如何从 Java 反序列化概念中声明为 transient 的文件中检索成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26465095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com