也可序列化对象属性

问题描述 投票:0回答:4

当我将

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{
    // ...
}
java serializable object-serialization
4个回答
6
投票

是的,你知道;如果您的类

Task
Role
不是
Serializable
,那么当您尝试序列化
java.io.NotSerializableException
的实例时,您将得到
User

当然,如果

Task
Role
包含其他非原始、非瞬态字段,它们也必须是
Serializable
,等等。


4
投票

这是最简单的选择。

另一个选择是使这些字段瞬态并“覆盖” writeObject 和 readObject 以实现您自己的这些类的序列化。这不太值得付出额外的努力。

顺便说一句:如果您有一个嵌套类,则外部类需要是可序列化的,并且即使您不使用它,嵌套类也隐式地具有对其的引用。出于这个原因和其他原因,我建议尽可能制作嵌套类

static


1
投票

简短回答:。 可序列化类中的每个对象都必须可以自行序列化。否则所有属性都无法恢复什么的。

此外,尝试序列化该对象时也会遇到异常。


1
投票

来自医生

未实现此接口的类将不会对其任何状态进行序列化或反序列化。

所以是的。

请阅读

© www.soinside.com 2019 - 2024. All rights reserved.