如果类定义为
public class A implements java.io.Serializable
{
Example a;
Test b;
Another c;
}
在检索状态时,将检索哪个顺序? 一个对象? 一个? B' C吗?
答案 0 :(得分:2)
如果你序列化A
,它将被写为:
A
a
b
c
A
反序列化按照序列化编写的顺序读取流。但是,序列化流只是一个八位字节序列,可能有不同顺序的a
,b
和c
(这些字段最多只能分配一次)。
此外,对象可以具有彼此的其他引用。例如,即使Test
无法在运行时引用Another
,b
的反序列化也可能包含反序列化为c
的对象。
答案 1 :(得分:0)
与此处的其他答案相反,未指定顺序,除了基类在派生类之前。
没关系,因为字段名也被传递,所以流是明确的。
它可以由班级本身改变。
与此处的答案相反,为流中的每个对象执行最近的非可序列化超类的默认构造函数。在这种情况下,至少有四个。
答案 2 :(得分:-1)
字节顺序非常重要,通常与编写java的顺序相同。
注意:不会执行任何构造函数! 注意:Obfuscatores可能会更改字段名称。