当前位置: 首页 > 知识库问答 >
问题:

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

娄学文
2023-03-14

活体->动物->NPC->人->孩子

Live、Animal和NPC不实现Serializable。我不能改变这三门课。Person和Child确实实现了Serializable。人和生活也是抽象的类。我可以很好地序列化一个人(他是一个孩子)并发送它,但是当我尝试反序列化一个人(他是一个孩子)时,我在Child上得到一个InvalidClassException(无效构造函数),表示“no valid constructor”。

为什么会出现这种情况?活人、动物和NPC都必须实现序列化吗?

共有1个答案

漆雕欣德
2023-03-14

以下问题的答案对ArrayList反序列化做了很好的解释。没有有效的构造函数

长话短说--类的第一个非序列化超类需要无参数构造函数,在您的例子中是npc

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

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

class Person extends SomeClass implements Serializable {
// ..
}
 类似资料:
  • 问题内容: 我在使用Jackson来反序列化JSON字符串时遇到问题(但是我没有问题将对象序列化为JSON)。 下面,我介绍我使用的类。当我接收到JSON字符串(已在其他地方进行序列化并通过Web服务检索的ProtocolContainer)并想反序列化时,就会出现问题: JSON字符串: {“ DataPacketJSONString”:null,“ DataPacketType”:“ MyPa

  • 问题内容: import React, { Component } from ‘react’; 通常我看到的是,如果他使用es6类,人们会在构造函数中执行this.state。如果不是,他可能会使用getinitialstatestate函数放置状态。但是上面的代码(是的,这是一个有效的代码),两者都没有使用。我有2个问题,这里的状态是什么?那是局部变量吗?如果是,为什么没有?prevState来

  • 无法将xml转换为java pojo对象。请查看以下详细信息:- 输入xml- pom.xml有依赖关系:- 公司Java语言 受雇者Java语言 将xml转换为java代码:- 下面的错误我在转换xml到pojo时得到 线程“main”com中出现异常。fasterxml。杰克逊。数据绑定。exc.MismatchedInputException:无法构造com的实例。测验Employee(尽管

  • 主要的 维京阶层 人类阶级 饮料和小便界面是一样的

  • 我正在尝试反序列化以下JSON 在以下自定义反序列化程序的帮助下 进入以下对象结构 我得到以下错误 通用域名格式。fasterxml。杰克逊。数据绑定。exc.MismatchedInputException:无法构造OrderId的实例(尽管至少存在一个创建者):没有从字符串值反序列化的字符串参数构造函数/工厂方法({“type”:“TAKEAWAY”,“data”:{“OrderId”:“AW

  • 问题内容: 我有以下DTO: 是生成构造函数的Lombok批注。这意味着该类没有no-arg构造函数。 我使用了Spring Boot 1.4.3.RELEASE,bean能够从JSON反序列化此类对象。 升级到Spring Boot 2.0.0.M7之后,我收到以下异常: Spring Boot 1.4.3中使用的Jackson版本是,而Spring Boot 2.0.0.M7中使用的是Jack