gpt4 book ai didi

java - 如果父类是可序列化的,在什么情况下您希望您的子类避免序列化?

转载 作者:行者123 更新时间:2023-11-29 08:06:07 25 4
gpt4 key购买 nike

 class Parent implements Serializable{

........
}

class Child extends Parent{

private void writeObject(ObjectOutputStream oos) throws IOException {
throw new NotSerializableException();
}
private void readObject(ObjectOutputStream oos) throws IOException {
throw new NotSerializableException();
}

}

上面的代码显示了如果父级已经实现Serializable,子级如何避免Serializable。这似乎是一个糟糕的设计并且在某些时候令人困惑,所以我想知道你会在什么情况下考虑这样做?

最佳答案

如果父级被标记为 Serializable 那么每个子级都应该是可序列化的。否则,糟糕的设计选择不是您如何通过抛出异常来禁止序列化,而是 Parent 不应该是 Serializable 的事实。

因为没有办法删除在祖先类中实现的接口(interface),你别无选择:引发异常总是比序列化一些不应该序列化的东西更好,这会让你认为一切正常,直到发生了什么序列化数据会出错。禁止序列化总是有原因的:只需在子类中添加一个不可序列化的字段就足够了(除非您可以将其用作 transient 但这并不总是可能的,如果该字段包含关键信息)。

关于java - 如果父类是可序列化的,在什么情况下您希望您的子类避免序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125738/

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