当我定义一个实现Serializable接口的Java对象时,该对象的成员也变成可序列化吗?还是我必须沿着嵌套深度走得更远,在路径上重新定义每个对象为可序列化?
当我定义一个实现Serializable接口的Java对象时,该对象的成员也变成可序列化吗?还是我必须沿着嵌套深度走得更远,在路径上重新定义每个对象为可序列化?
在Java中,您经常使用的大多数类都是可序列化的(如Collections、String、Number的后代等),但是您引用的任何类都必须是可序列化的或声明为瞬态。当然,如果它们是瞬态的,在类反序列化时就不会被引用。
成员不会自动变为可序列化。
如果您在类中编写了自己的成员,则必须转到每个成员并使它们可序列化(通过实现接口)。
JAVA库提供的大多数类型已经是可序列化的,因此这不应该困扰您。
当然,这适用于所有成员的递归。
换句话说 - 如果需要传输或保存对象内任何深度的数据或值,则必须将其序列化。