[英]Java - Handle serialization only in superclass
我的 Web 应用程序中有一个域类层次结构,我想将其序列化。 所有领域类都继承自一个抽象基类。 我计划在抽象基类中覆盖 readObject 和 writeObject。 有没有办法让所有子类都服从超类进行序列化,这样子类就不会序列化它们自己的任何字段?
我正在使用FST 序列化- 如果以上在 Java 中是不可能的,有没有办法,例如,为某种类型的对象指定“序列化策略”?
public abstract class Base implements Serializable {
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException {
...
}
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException {
...
}
}
public class Person extends Base {
// I don't want Person class to do anything for serialization
}
更新:我有一百多个子类,每个子类都有几个字段。 这些类构成了我的 Web 应用程序中的域模型。 我希望找到一种更简单的方法来处理这个问题,而不是在每个类的每个字段上指定“瞬态”。
背景:我正在序列化会话状态以允许保存到缓存服务器。 我们的会话对象引用了域对象。 而不是保存整个域对象,我希望只保存域对象的一部分,并在会话对象“反弹”到另一台服务器时重新构建它。
有没有办法让所有子类都服从超类进行序列化,这样子类就不会序列化它们自己的任何字段?
您可以按照要求不要序列化任何字段的相同方式执行此操作:使子类中的所有字段均为transient
(或static
)。
但这对子类来说是一个相当大的限制,也是程序员的负担,要记住让所有字段都是transient
,从某种意义上说,它使子类中的字段使用受限。 仔细考虑为什么要阻止子类字段被序列化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.