有没有办法序列化非序列化类?

时间:2017-05-30 10:25:53

标签: java serialization java-7

我想通过序列化将学校对象保存到我的数据库中。问题是我可以更新School类并实现可序列化的接口但是问题是有太多的字段,如Student,CityInfo,而其中没有可序列化的字段。有没有办法在不更新类的情况下使用所有这些字段序列化School对象?

public class School{
    private Student student;
    private CityInfo info;
    ....

}

2 个答案:

答案 0 :(得分:0)

您必须实现自己的序列化和反序列化方法。

请点击此处的“自定义协议”部分。

this

答案 1 :(得分:0)

就Java字节码序列化而言,如果没有自定义序列化过程,就无法做到这一点。

  

正如其中所说:http://www.jguru.com/faq/view.jsp?EID=34802

     

“序列化对象时,序列化机制通过链接继承层次结构,依次保存每个Serializable超类的状态。当序列化到达第一个不可序列化的超类时,序列化停止。

     

反序列化时,第一个不可序列化的超类的状态不是从流中恢复,而是通过调用该类的“无参数构造函数”来恢复。如果无参数构造函数不适合您的目的,则必须使用writeObject()和readObject()自定义子类的序列化,以便从您认为必要的非可序列化超类中写出和恢复任何信息。

但是,为什么必须使用内置的Java序列化?有许多库可以将您的公共字段(以及具有适当的getter和setter的字段)序列化为JSON,XML或其他格式。这也有使您的数据更便携的附加好处。