反序列化时,java类需要无参构造函数

  • 现象
  • 原因
  • 解决办法

现象

  今天在调http接口时,接收到的返回值一直是null,debug后发现系统抛了“No suitable constructor found for type 。。。”,说明这个类没有无参数构造函数(由于建了别的构造函数,覆盖了无参构造函数),抛异常后代码熔断,进入fallback(熔断处理方法)方法,这个方法默认返回null,所以这个对象为null,而且这个异常被捕捉了,所以日志上看不出来。

 private List<Image> detailImages;  //我在response中添加了这个属性public static class Image {private String smallUrl;private String largeUrl;private int largeUrlWidth;private int largeUrlHeight;//没有无参构造函数public Image(String smallUrl, String largeUrl) {this.smallUrl = smallUrl;this.largeUrl = largeUrl;}public Image(String smallUrl, String largeUrl, int largeUrlWidth, int largeUrlHeight) {this.smallUrl = smallUrl;this.largeUrl = largeUrl;this.largeUrlWidth = largeUrlWidth;this.largeUrlHeight = largeUrlHeight;}public int getLargeUrlWidth() {return largeUrlWidth;}public void setLargeUrlWidth(int largeUrlWidth) {this.largeUrlWidth = largeUrlWidth;}public int getLargeUrlHeight() {return largeUrlHeight;}public void setLargeUrlHeight(int largeUrlHeight) {this.largeUrlHeight = largeUrlHeight;}public String getSmallUrl() {return smallUrl;}public void setSmallUrl(String smallUrl) {this.smallUrl = smallUrl;}public String getLargeUrl() {return largeUrl;}public void setLargeUrl(String largeUrl) {this.largeUrl = largeUrl;}}

原因

  json在转对象反序列化的时候,需要先初始化对象,默认调用无参构造函数,再赋值,所以抛出异常。

解决办法

  添加无参构造函数

反序列化时,java类需要无参构造函数相关推荐

  1. Java类(无参、有参构造方法、静态变量)

    构造方法 作用: 初始化成员变量的 注意: 1.构造方法 没有返回值 甚至不写返回值的类型 2.构造方法的方法名 与类名 相同 书写: 关键字 构造方法名(){ } 举例: 创建cat类: publi ...

  2. JAVA类的无参方法

    Java注释:                 //:单行注释                 /**/:多行注释                 /**    */:JavaDoc注释     方法 ...

  3. java无参_Java——类的无参、带参方法

    >类的无参方法 什么是类的方法 类是由一组具有相同属性和共同行为的实体抽象而来.对象执行的操作是通过编写类的方法实现的.显而易见,类的方法是一个功能模块,其作用是"做一件事情" ...

  4. Java面向对象(类的无参和带参)

    1.类的无参方法 语法格式: public   返回值类型  方法名()  {            //方法的主体 } 返回值的两种情况: 第一种情况:如果方法没有返回值,返回值类型为void 第二 ...

  5. c++为什么一定要定义无参构造函数?类中无参构造的作用

    c++中无参构造函数的作用: 该类对象被创建时,编译系统为对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作. 故:构造函数的作用:初始化对象的数据成员. 举例: clas ...

  6. java子类要调用父类的无参构造函数

    如果子类要调用父类的无参构造函数,则通过super()调用来实现. 子类的每一个构造方法都必须显式或隐式调用父类的一个构造方法. 如果不显式调用, 则系统隐式调用super(),即父类的无参构造方法( ...

  7. 深入理解Kotlin无参构造函数

    Unsafe 创建实例 在java中 创建一个对象 其实主要就是3种方法 通过new 关键字来创建 这种是最常见的 通过反射构造方法来创建对象 这种也不少见.很多框架中都有使用. Unsafe类来创建 ...

  8. 为什么要写无参构造函数

    今天在码代码时报错: Cannot construct instance of org.tech.arthur.model.domain.DataTestDTO (no Creators, like ...

  9. c++的构造函数极其调用(无参构造函数,有参构造函数,拷贝构造函数)

    1.c++编译器会自动调用构造函数 //构造函数(与类名相同) //析构函数:没有参数也没有任何返回类型,被自动调用 #include<iostream> using namespace ...

最新文章

  1. spring mvc原理_Spring MVC的工作原理,我们来看看其源码实现
  2. 快速删除数据库中所有表中的数据
  3. python神经网络库 keras_在Python和R中使用Keras和Tensorflow进行深度学习
  4. 7-227 PAT排名汇总 (25 分)
  5. C# 序列化理解 1(转)
  6. package ‘catkin‘ depends on non-existent package ‘python3-catkin-pkg‘
  7. 缓解疲劳、舒缓全身放松,游养乐分享养生小秘籍
  8. 边框检测原理与Tensorflow代码
  9. 无法将您的Kindle连接到Wi-Fi网络怎么办-kindle无法连接wifi-kindle无法连接手机热点
  10. 怎么查看各进程分别占用多少服务器内存?
  11. 数字图像的类型——伪彩色,真彩色,假彩色
  12. MFC exe文件生成的图标更改方法
  13. 手欠! 退出icloud后, 桌面文件全没了——解决方法
  14. 520表白html,html5 canvas全屏的520爱心表白网页代码
  15. 虚拟机服务器的IP无法连接,虚拟机远程服务器连接ip
  16. python二级考试细节整理
  17. C#面向对象总结小项目之实现英雄联盟回合制小游戏(文字版)
  18. 偏差、方差、精确率、召回率
  19. 如何用你的Python代码赚取你的第一桶金
  20. centos7.6 查看防火墙状态、关闭防火墙

热门文章

  1. 手机租赁分期上征信吗?
  2. 了解什么是Http代理
  3. Unity3D协程介绍 以及 使用
  4. idea报8080端口被占用解决
  5. LeetCode——寻找两个有序数组的中位数
  6. jmeter多线程共享cookie
  7. 源代码扫描工具DMSCA(端玛科技企业级源代码安全和质量缺陷扫描分析服务平台)体验报告
  8. 错误No qualifying bean of type
  9. VC Office2007界面对话框实现
  10. war3的mdx动画DEMO