我想通过序列化将学校对象保存到我的数据库中。问题是我可以更新School类并实现可序列化的接口但是问题是有太多的字段,如Student,CityInfo,而其中没有可序列化的字段。有没有办法在不更新类的情况下使用所有这些字段序列化School对象?
public class School{
private Student student;
private CityInfo info;
....
}
答案 0 :(得分:0)
答案 1 :(得分:0)
就Java字节码序列化而言,如果没有自定义序列化过程,就无法做到这一点。
正如其中所说:http://www.jguru.com/faq/view.jsp?EID=34802
“序列化对象时,序列化机制通过链接继承层次结构,依次保存每个Serializable超类的状态。当序列化到达第一个不可序列化的超类时,序列化停止。
反序列化时,第一个不可序列化的超类的状态不是从流中恢复,而是通过调用该类的“无参数构造函数”来恢复。如果无参数构造函数不适合您的目的,则必须使用writeObject()和readObject()自定义子类的序列化,以便从您认为必要的非可序列化超类中写出和恢复任何信息。
但是,为什么必须使用内置的Java序列化?有许多库可以将您的公共字段(以及具有适当的getter和setter的字段)序列化为JSON,XML或其他格式。这也有使您的数据更便携的附加好处。