You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

反序列化报错:非静态内部类仅能通过无参构造实例化问题排查

问题分析

报错信息明确指出非静态内部类只能通过无参默认构造实例化,但你添加无参构造后仍报错,核心原因是:MyObject是非静态内部类(嵌套在测试类或其他类内部),Jackson无法直接实例化这类类——非静态内部类的实例必须依赖外部类实例,而Jackson默认不会自动创建外部类实例来初始化它。

解决方案

两种直接有效的修复方式:

1. 将MyObject改为静态内部类

在MyObject的类定义前添加static修饰符,消除对外部类实例的依赖:

public static class MyObject
{
    public int value1;
    public String value2;
}

2. 将MyObject改为独立顶级类

把MyObject从当前嵌套的类中抽出来,作为单独的Java文件(比如MyObject.java),成为独立的顶级类:

// MyObject.java
public class MyObject
{
    public int value1;
    public String value2;
}
验证说明

修改后重新运行测试代码,Jackson就能正常完成MyObject[]数组的反序列化。因为静态内部类或顶级类属于独立类型,无需外部类实例即可被Jackson通过无参构造创建对象。

内容的提问来源于stack exchange,提问作者Silny ToJa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:10:28