java标准序列化顺序

Ost*_*tan 5 java serialization serializable

我想知道以下示例类的属性将序列化的顺序:

public class Example implements Serializable {

   private static final long serialVersionUID = 8845294179690379902L;

   public int score;
   public String name;
   public Date eventDate;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

为什么我想知道这个:

我在我的一个类的文件中得到了一个序列化字符串,它没有readObject()或writeObject()的实现.现在实现已更改(某些属性已消失),我想编写一个处理旧序列化类的readObject()方法.

在那里,我只是阅读这个属性,但不会将其保存到创建的对象.

这基本上只适用于遗产我现在使用数据库但需要支持旧的序列化文件.

写这个readObject()我需要流中的属性顺序.

Ste*_*n C 12

基于对规范的简要阅读.

  • 字段按字描述符的顺序写入类描述符

  • 字段描述符采用"规范顺序",定义如下:

    "原始类型字段的描述符首先按字段名称排序,然后按字段名称排序的对象类型字段的描述符.使用String.compareTo对名称进行排序."


(我怀疑关于规范顺序的这一点应该无关紧要.序列化中字段的实际顺序应该可以从同一序列化中类描述符中字段描述符的实际顺序中恢复.我怀疑规范的原因指定的顺序是它影响计算的序列化ID.但我可能很容易错误:-))


参考: