gpt4 book ai didi

java - 为什么不在 Java 中序列化抽象类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:18 25 4
gpt4 key购买 nike

我读到一般抽象类不应该在 Java 中被序列化。子类应该是可序列化的(如果需要,可以使用自定义读取、写入方法,例如,当抽象类具有字段时)。

这背后的原因是什么?为什么它被认为是糟糕的设计?

更新 1: 我有一个包含一些字段和三个子类的抽象类。截至目前,我正在使用以下方法。

我已经使所有的子类都可以使用自定义的读取、写入方法进行序列化。在抽象类中,我有以下方法。

void writeFields(ObjectOutputStream out)throws IOException { .... }

void readFields(ObjectInputStream in) throws IOException, ClassNotFoundException{ ... }

在子类中的自定义读取、写入方法中,我调用这些方法来(反)序列化抽象类中的字段。这种方法正确吗?还是有其他更好的方法?

更新 2: 我采纳了 Tom 的建议并使我的抽象类可序列化。 (我希望所有子类都是可序列化的,并且我在抽象类中有数据)这是一个旁白,但只是为了完成我正在使用的故事 reflection to change final fields as advised by Jeremy Manson.

最佳答案

我认为原因是如果一个抽象类实现了Serializable,就没有办法说一个子类型不应该是Serializable。最好让每个具体类型自己声明...

关于java - 为什么不在 Java 中序列化抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com