防止父类Java的序列化
有没有一种方法可以防止父类被序列化 当我们对子类进行序列化时,直到父类为止,都会执行序列化防止父类Java的序列化,java,serialization,Java,Serialization,有没有一种方法可以防止父类被序列化 当我们对子类进行序列化时,直到父类为止,都会执行序列化 我可以限制父类的序列化并序列化我正在处理的唯一子类吗 虽然在技术上可以单独微调每一级继承,甚至可以排除超类字段,但您可能想回到这里 基本上有两种情况: 超类没有任何字段/状态。那你就没有什么可排除的了 超类具有状态,由该类的字段表示 那么,您认为如何有意义地解决第二部分?您可以看到,当您允许反序列化而没有超类字段的数据时,这意味着您可能需要进行大量额外的测试。确保超类方法不会抛出异常——因为所有字段突然都
我可以限制父类的序列化并序列化我正在处理的唯一子类吗 虽然在技术上可以单独微调每一级继承,甚至可以排除超类字段,但您可能想回到这里 基本上有两种情况:
我的非回答:仔细考虑你的想法是否真的是最好的面向对象设计来解决潜在的需求。 虽然在技术上可以单独微调每一级继承,甚至可以排除超类字段,但您可能想回到这里 基本上有两种情况:
implements Externalizable
,并在writeExternal()
方法中准确地编写所需内容,注意不要序列化超类中的任何内容,并在readExternal()
方法中准确地读取该内容
或者,只需实现Serializable
并提供自己的readObject()/writeObject()
方法,再次注意不要从超类序列化任何内容,在这种情况下也不要调用defaultWriteObject()
或defaultReadObject()
在这两种情况下,当前类数据的实际序列化完全取决于您。这是可能的。只需将类声明为implements Externalizable
,并在writeExternal()
方法中准确地编写所需内容,注意不要序列化超类中的任何内容,并在readExternal()
方法中准确地读取该内容
或者,只需实现Serializable
并提供自己的readObject()/writeObject()
方法,再次注意不要从超类序列化任何内容,在这种情况下也不要调用defaultWriteObject()
或defaultReadObject()
在这两种情况下,当前类数据的实际序列化完全取决于您。任何子类的实例都是通过先构造基类来构造的,所以想知道为什么您只想序列化子类而不想序列化基类?仅供参考:我重新表述了我的答案,以便更清楚地说明为什么我拒绝了您的想法。如果你觉得有帮助,请告诉我。任何子类的实例都是通过先构造基类来构造的,所以想知道为什么你只想序列化子类而不序列化基类?仅供参考:我重新表述了我的答案,以便更清楚地说明为什么我拒绝了你的想法。如果您觉得有用,请告诉我。我使用的子类的继承级别为4。因此,对于序列化,我只关心子类所持有的数据。我不想在序列化时转储子类的整个继承层次结构。请查看我的更新。但是再一次——你所要求的没有多大意义。除此之外,-4个祖先类本身就有一种不好的设计味道。同意。但我无法控制类的层次结构。我正在按照Stipulated设计进行操作,因为我需要一个子类。但是如果没有办法阻止父类序列化。让我回到绘图板上,我使用的子类的继承级别为4。因此,对于序列化,我只关心子类所持有的数据。我不想在序列化请查看我的更新。但是再一次——你所要求的没有多大意义。是