当前位置: 代码迷 >> 综合 >> java 类部类必须声明为static静态的 com.alibaba.fastjson.JSONException: can‘t create non-static inner class ins
  详细解决方案

java 类部类必须声明为static静态的 com.alibaba.fastjson.JSONException: can‘t create non-static inner class ins

热度:51   发布时间:2023-09-19 18:40:15.0

根据组里其他人的分享,这个问题主要是因为Java内部类和嵌套类的实现机制造成的,首先按照Java编程思想的说法,静态的内部类叫做嵌套类,那么两者有什么区别呢?一般的内部类虽然在源代码中没有写,但是编译后会看到里面多了一个指向外部类的引用,如果使用内部类进行json序列化,会因为找不到它的外部类而报异常,而嵌套类因为是静态的,里面没有默认的外部类的引用,即使没有外部类的对象也能够使用,因此在json转换的时候不会报错。

原因:

  如果出现类嵌套类的情况,需要将被嵌套的那个类设置为static。

比如:

    public class AA {// 相关属性public class BB {//会报错// 相关属性}}

应该改为:

    public class AA {// 相关属性public static class BB {// 相关属性}}
  相关解决方案