gpt4 book ai didi

java - 为什么我的类的序列化大小更大,那么它的变量之和

转载 作者:行者123 更新时间:2023-11-30 07:52:53 24 4
gpt4 key购买 nike

我有一个简单的 Java 类:

import java.io.Serializable;

public class SimpleClass implements Serializable {
private static final long serialVersionUID = -9062339996046009959L;
public byte Byte;
public int id;

public SimpleClass(byte Byte, int id) {
this.Byte = Byte;
this.id = id;
}
}

既然 int 是 4 个字节,一个字节就是一个字节,那么这个类不应该需要 5 个字节吗?

但是当我序列化它并找到字节数组的长度时,我得到 59,

为什么会这样?

我也在用 this将我的对象转换为字节数组。

最佳答案

简单:Java 序列化很多 不仅仅是字段值。见对应grammar规范。

例如,您注意到 serialVersionUID 了吗?这也必须进入二进制数据。当然 - 完整的类名(绝对 - 包括包)。

请记住:这个想法是您可以将任意(可序列化的)对象序列化为字节流)。当您反序列化时,您没有指定此类字节流中所有对象的类型!

换句话说:这些字节必须包含所有复活所包含的对象实例所需的信息。因此,您需要完整的类名;如果存在,则用于一致性检查的 servialVersionUID。

关于java - 为什么我的类的序列化大小更大,那么它的变量之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299136/

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