gpt4 book ai didi

java - transient int的反序列化值?

转载 作者:搜寻专家 更新时间:2023-11-01 01:06:59 28 4
gpt4 key购买 nike

public class Employee implements java.io.Serializable
{
public String name;
public int transient id;
}

假设我们正在序列化...

Employee e = new Employee();
e.name="REUBEN";
e.id=94731;

现在如果我反序列化它

System.out.println("Name: " + e.name); will give the o/p REUBEN
System.out.println("ID: " + e.id); will give the o/p 0

很明显,idtransient,它没有被发送到输出流。

我的问题是,这个零是 int 的默认值吗?
我们没有保存状态,所以输出为 0 ,但它也是一个值。它不应该是 null 吗?

最佳答案

是的,类的成员变量在它们出现时(当它们在 JVM 中创建时)获得它们的默认值,因此 0,这是原始 int 类型的默认值。如果这导致“验证”ID 是否已发送的问题,只需使用 Integer 即可获得默认值 null(不是说它应该是任何混淆的来源,只是说)。

public class Employee implements java.io.Serializable
{
public String name;
public transient Integer id;
}
System.out.println("Name: " + e.name); will give the o/p REUBEN
System.out.println("ID: " + e.id); will give the o/p null

关于java - transient int的反序列化值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6922260/

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