假设我有一个java类MyClass
,它不是从任何类继承的。 MyClass
实施Serializable
。
MyClass
可以Serializable
没有其他条件吗?
它取决于MyClass
包含哪些对象,以及这些对象本身是Serializable
吗?
例如,在下面的课程中,如果Mappedoodle2
未实现Serializable
,那么Mappedoodle
序列化时会出现异常吗?
import java.io.Serializable;
public class Mappedoodle implements Serializable {
private static final long serialVersionUID = -1760231235147491826L;
private String text;
private int value;
private Mappedoodle2 mm = new Mappedoodle2();
public Mappedoodle(String text, int value) {
this.text = text;
this.value = value;
}
public String getText() {
return text;
}
public int getValue() {
return value;
}
@Override
public String toString() {
return text + ", " + value;
}
}
答案 0 :(得分:1)
要序列化对象,我假设您使用的是ObjectOutputStream
。以下是一些相关文档:http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html#writeObject(java.lang.Object)
该部分描述了如何编写对象的基础知识。该流写入以下内容:
public class Mappedoodle implements Serializable
)transient
也不是static
作为对象的每个字段也将写入流。这意味着每个字段都必须实现Serializable
。如果没有,您将获得NotSerializableException
。
您可以使用以下几种方法:
Mappedoodle2
可序列化mm
transient
,这意味着它不会被序列化。答案 1 :(得分:0)
首先,所有类在技术上都从java.lang.Object
延伸,所以即使MyClass
也会继承它。
MyClass
只需实现接口即可实现Serializable
,就像任何其他接口一样。如果一个类包含实现Serializable
的类的属性,则父类不需要自己实现Serializable
。