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.