Java 也可以序列化对象属性

Java 也可以序列化对象属性,java,serializable,object-serialization,Java,Serializable,Object Serialization,当类中有Serializable时,是否需要将Serializable添加到类中的所有对象 比如说, public class User implements Serializable{ private List<Role> role; private Task task; } 是的,你知道;如果您的类任务和角色不可序列化,如果您尝试序列化用户的实例,您将得到java.io.NotSerializableException 当然,如果任务或角色包含其他非原始、非瞬态字段,则它们也

当类中有
Serializable
时,是否需要将
Serializable
添加到类中的所有对象

比如说,

public class User implements Serializable{

private List<Role> role;
private Task task;
}

是的,你知道;如果您的类
任务
角色
不可
序列化
,如果您尝试序列化
用户
的实例,您将得到
java.io.NotSerializableException


当然,如果
任务
角色
包含其他非原始、非瞬态字段,则它们也必须是
可序列化的
,等等。

简短回答:。 可序列化类中的每个对象都必须能够自行序列化。否则,无法恢复所有属性或其他内容

此外,尝试序列化此对象时也会出现异常。

是的,因为:

Classes that do not implement this interface will not have any of their state
serialized or deserialized. All subtypes of a serializable class are themselves 
serializable. The serialization interface has no methods or fields and serves 
only to identify the semantics of being serializable.

如果尝试序列化实现Serializable的类的对象,但该对象包含对不可序列化类的引用,则运行时将抛出
NotSerializableException
,这是最简单的选项

另一个选项是将这些字段设置为transisent并“覆盖”writeObject和readObject,以便为这些类实现您自己的序列化。这不太可能值得付出额外的努力

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

来自doc

未实现此接口的类的任何状态都不会序列化或反序列化

所以是的


向她询问规格中的外观确实更容易?同时检查此项,这将对您有所帮助,下面的内容如何:
Classes that do not implement this interface will not have any of their state
serialized or deserialized. All subtypes of a serializable class are themselves 
serializable. The serialization interface has no methods or fields and serves 
only to identify the semantics of being serializable.