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

标签 java deserialization transient

在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/

相关文章:

java - 我怎样才能将这个反序列化代码从java翻译成scala?

php - 通过单击按钮调用时函数无法正确执行

java - 是否可以使用反射获取类中的 transient 场

java - 从 ArrayList HashMap<String, String> 中的键/值中检索值

java - 如何为 Eclipse 项目中的文件指定正确的 URL

c# - 在 C# 中序列化和反序列化自定义异常

java - hbm.xml 中映射的属性可以是 transient 的吗?

Java openGL - 绘制 3D 对象

java - android java线程中的新ArrayAdapter

java - 解析具有后代元素的 JSON 列表