fastjson parse类中有内部类时,且内部类嵌套内部类报错

本文介绍了一个关于FastJSON解析非静态内部类时出现的JSONException问题,并提供了解决方案,即通过将内部类声明为静态来避免默认构造方法需要外部类实例的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

com.alibaba.fastjson.JSONException: create instance error, class com.XXXX.model.ClassA$ClassInnerB
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.createInstance(JavaBeanDeserializer.java:100) ~[fastjson-1.1.46.sec01.jar:na]
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:307) ~[fastjson-1.1.46.sec01.jar:na]


直接看别人的总结,基本思路和他一样。解决方法是加static

原理是:非静态内部类持有外部类的一个实例,默认构造方法是需要外部类实例的方法。


http://blog.youkuaiyun.com/sdjkjkjjk/article/details/71554316


### 使用 Fast 解析 Java 静态内部类 解析静态内部类涉及理解其定义方式以及如何实例化和使用这些。对于静态内部类而言,由于它们可以独立于外部被实例化,因此处理起来相对简单。 #### 定义静态内部类 静态内部类嵌套在一个外部中的,并带有 `static` 关键字修饰。这意味着它可以像普通顶级一样拥有自己的静态成员变量和方法,而不需要依赖外部的对象存在。 ```java public class OuterClass { private String outerField; // Static inner class definition public static class InnerStaticClass { public void display() { System.out.println("This is a method from the static nested class."); } // A simple utility function within this static inner class. public int add(int a, int b) { return a + b; } } } ``` 上述代码展示了如何声明一个名为 `OuterClass` 的外层及其内的静态内部类 `InnerStaticClass`[^1]。 #### 实例化并调用静态内部类的方法 因为静态内部类并不依附于特定的外部实例,所以可以直接通过外部名称加上点操作符 `.class_name()` 来创建其实例: ```java // Creating an instance of the static inner class directly using its enclosing class name OuterClass.InnerStaticClass myObject = new OuterClass.InnerStaticClass(); myObject.display(); // Calling non-static member function defined inside the static inner class System.out.println(myObject.add(5,7)); // Using another method that performs addition operation on two integers passed as parameters ``` 这段代码说明了怎样去初始化一个静态内部类的对象并调用了其中的一些函数[^2]。 请注意,在这里提到的例子中并没有涉及到所谓的 “fast” 技术栈;这是因为“fast”的概念通常指的是快速开发框架或是加速某些过程的技术手段,而在标准Java编程里,静态内部类的操作本身已经是相当高效的过程之一。如果意图是指某种具体的工具或库用于加快编译间或其他方面,则需具体指明以便给出更精确的回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值