gpt4 book ai didi

Java - 反序列化 InvalidClassException(没有有效的构造函数)

转载 作者:太空狗 更新时间:2023-10-29 22:55:46 24 4
gpt4 key购买 nike

我正在尝试序列化一个对象,然后在将其数据发送到客户端程序后将其反序列化。

这是对象继承如何工作的示例。我正在序列化和反序列化的对象是人。

生活 -> 动物 -> NPC -> 人 -> child

Living、Animal 和 NPC 不实现 Serializable。我无法更改这三个类。 Person 和 Child 确实实现了 Serializable。 Person 和 Living 也是抽象类。我可以很好地序列化一个人(他是一个 child )并发送它,但是当我尝试反序列化一个人(他是一个 child )时,我在 child 上得到一个 InvalidClassException,说“没有有效的构造函数”。

为什么会这样? Living、Animal 和 NPC 都必须实现 Serializable 吗?

最佳答案

在以下问题的答案中做了很好的解释 Deserializing an ArrayList. no valid constructor

长话短说 - 您的类的第一个不可序列化父类(super class)需要无参数构造函数,在您的情况下为 NPC

如果您没有访问 NPC 的权限并且它不包含无参数构造函数 - 那么您可以向层次结构中再添加一个“假”类,它会选择正确的类。例如

class SomeClass extends NPC {
// will be called during deserialization
public SomeClass(){
// call custom constructor of NPC
super(null);
}
}

class Person extends SomeClass implements Serializable {
// ..
}

关于Java - 反序列化 InvalidClassException(没有有效的构造函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12125076/

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