在Java序列化中,如果一个类有多个对象(组合),那么将以什么顺序检索状态?
如果一个类被定义为在Java序列化中,如果一个类有多个对象(组合),那么将以什么顺序检索状态?,java,serialization,Java,Serialization,如果一个类被定义为 public class A implements java.io.Serializable { Example a; Test b; Another c; } 在检索状态时,将按什么顺序检索? A的目标是什么? A. B 字节码的顺序很重要,通常与编写java时的顺序相同 将加载一个 b将被加载 c将被加载 如果没有抛出异常,则放置a、b、c 如果存在,则执行方法readObject 注意:不会执行任何构造函数! 注意:模糊处理程序可能会更改字段名
public class A implements java.io.Serializable
{
Example a;
Test b;
Another c;
}
在检索状态时,将按什么顺序检索?
A的目标是什么?
A.
B
字节码的顺序很重要,通常与编写java时的顺序相同
注意:模糊处理程序可能会更改字段名。如果序列化
A
,它将被写为:
A的开始
a
b
c
A的结尾
a
、b
和c
(字段最多只能分配一次)
此外,这些对象可以有其他相互引用。例如,即使在运行时,Test
无法引用另一个,b
的反序列化可能包括反序列化到c
的对象
与这里的其他答案相反,没有指定顺序,只是基类先于派生类
这无关紧要,因为字段名也被传递,所以流是明确的
它可以由类本身更改
与这里的答案相反,为流中的每个对象执行最近的不可序列化超类的默认构造函数。在这种情况下,至少有四个
请参阅。下定决心。它可以“写为a/b/c”,也可以“可能有不同顺序的a、b、c”。@EJP它可以写为a/a/b/c/a,但可能由流的不同版本创建的流或可能在vi中创建的流可能包含顺序为a/c/b/a/a的数据。a、b、c
可以是任何顺序,并执行不可序列化的基类构造函数:在本例中,至少执行四个-1@EJP请解释一下。运行时在哪里知道不可序列化基类构造函数的参数?如果存在多个基类构造函数,运行库在哪里知道需要执行什么不可序列化的基类构造函数?