如果您的Serializable类包含不可序列化的成员,会发生什么? 你是如何解决的?
答案 0 :(得分:0)
当您尝试Serialize
时,它会抛出NotSerializableException
。为避免这种情况,请将该字段设为transient
字段。
private transient YourNonSerializableObject dontSerializeMe; // This won't be serialized
答案 1 :(得分:0)
除非声明字段transient
(这将阻止字段序列化,即不会保存),否则该类将不可序列化。
如果可以,我建议将该成员设置为可序列化,否则您必须使用writeObject
和readObject
手动编写和/或读取该字段。有关这些方法的信息,请参阅文档:http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html
答案 2 :(得分:0)
@ HashUser123:在您不想序列化的字段之前使用transient关键字。 例如:
private transient int salary;
答案 3 :(得分:0)
您的类的一个字段是一个未实现Serializable
的类的实例,它是一个标记接口(无方法),告诉JVM它可以使用默认的序列化机制对其进行序列化。 / p>
如果该类的所有字段都是Serializable
,那么很简单 - 只需将implements Serializable
添加到类声明中。
如果没有,请重复该字段类的过程,依此类推到对象图中。
如果您点击了不能或不应该的课程,请Serializable
,请将transient
关键字添加到字段声明中。这将告诉JVM在执行Serialization
时忽略该字段。