反序列化时,java类需要无参构造函数
反序列化时,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类需要无参构造函数相关推荐
- Java类(无参、有参构造方法、静态变量)
构造方法 作用: 初始化成员变量的 注意: 1.构造方法 没有返回值 甚至不写返回值的类型 2.构造方法的方法名 与类名 相同 书写: 关键字 构造方法名(){ } 举例: 创建cat类: publi ...
- JAVA类的无参方法
Java注释: //:单行注释 /**/:多行注释 /** */:JavaDoc注释 方法 ...
- java无参_Java——类的无参、带参方法
>类的无参方法 什么是类的方法 类是由一组具有相同属性和共同行为的实体抽象而来.对象执行的操作是通过编写类的方法实现的.显而易见,类的方法是一个功能模块,其作用是"做一件事情" ...
- Java面向对象(类的无参和带参)
1.类的无参方法 语法格式: public 返回值类型 方法名() { //方法的主体 } 返回值的两种情况: 第一种情况:如果方法没有返回值,返回值类型为void 第二 ...
- c++为什么一定要定义无参构造函数?类中无参构造的作用
c++中无参构造函数的作用: 该类对象被创建时,编译系统为对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作. 故:构造函数的作用:初始化对象的数据成员. 举例: clas ...
- java子类要调用父类的无参构造函数
如果子类要调用父类的无参构造函数,则通过super()调用来实现. 子类的每一个构造方法都必须显式或隐式调用父类的一个构造方法. 如果不显式调用, 则系统隐式调用super(),即父类的无参构造方法( ...
- 深入理解Kotlin无参构造函数
Unsafe 创建实例 在java中 创建一个对象 其实主要就是3种方法 通过new 关键字来创建 这种是最常见的 通过反射构造方法来创建对象 这种也不少见.很多框架中都有使用. Unsafe类来创建 ...
- 为什么要写无参构造函数
今天在码代码时报错: Cannot construct instance of org.tech.arthur.model.domain.DataTestDTO (no Creators, like ...
- c++的构造函数极其调用(无参构造函数,有参构造函数,拷贝构造函数)
1.c++编译器会自动调用构造函数 //构造函数(与类名相同) //析构函数:没有参数也没有任何返回类型,被自动调用 #include<iostream> using namespace ...
最新文章
- spring mvc原理_Spring MVC的工作原理,我们来看看其源码实现
- 快速删除数据库中所有表中的数据
- python神经网络库 keras_在Python和R中使用Keras和Tensorflow进行深度学习
- 7-227 PAT排名汇总 (25 分)
- C# 序列化理解 1(转)
- package ‘catkin‘ depends on non-existent package ‘python3-catkin-pkg‘
- 缓解疲劳、舒缓全身放松,游养乐分享养生小秘籍
- 边框检测原理与Tensorflow代码
- 无法将您的Kindle连接到Wi-Fi网络怎么办-kindle无法连接wifi-kindle无法连接手机热点
- 怎么查看各进程分别占用多少服务器内存?
- 数字图像的类型——伪彩色,真彩色,假彩色
- MFC exe文件生成的图标更改方法
- 手欠! 退出icloud后, 桌面文件全没了——解决方法
- 520表白html,html5 canvas全屏的520爱心表白网页代码
- 虚拟机服务器的IP无法连接,虚拟机远程服务器连接ip
- python二级考试细节整理
- C#面向对象总结小项目之实现英雄联盟回合制小游戏(文字版)
- 偏差、方差、精确率、召回率
- 如何用你的Python代码赚取你的第一桶金
- centos7.6 查看防火墙状态、关闭防火墙