当我将
Serializable
添加到类中时,是否也需要将 Serializable
添加到所有字段的类中?
例如,
public class User implements Serializable {
private List<Role> role;
private Task task;
}
我还需要将
Serializable
添加到 Role
和 Task
吗?
public class Task implements Serializable{
// ...
}
public class Role implements Serializable{
// ...
}
是的,你知道;如果您的类
Task
和 Role
不是 Serializable
,那么当您尝试序列化 java.io.NotSerializableException
的实例时,您将得到 User
。
当然,如果
Task
或 Role
包含其他非原始、非瞬态字段,它们也必须是 Serializable
,等等。
这是最简单的选择。
另一个选择是使这些字段瞬态并“覆盖” writeObject 和 readObject 以实现您自己的这些类的序列化。这不太值得付出额外的努力。
顺便说一句:如果您有一个嵌套类,则外部类需要是可序列化的,并且即使您不使用它,嵌套类也隐式地具有对其的引用。出于这个原因和其他原因,我建议尽可能制作嵌套类
static
。
简短回答:是。 可序列化类中的每个对象都必须可以自行序列化。否则所有属性都无法恢复什么的。
此外,尝试序列化该对象时也会遇到异常。