为什么要写无参构造函数

今天在码代码时报错:
Cannot construct instance of org.tech.arthur.model.domain.DataTestDTO (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
网上搜索过后发现是于DTO中未写无参构造方法。
那么为什么一定要写无参构造方法呢?
无参构造函数,主要用于在子类创建对象时使用,java程序在执行子类的构造方法之前,会去调用父类构造方法,可以显示的指定super()某一个父类构造函数,如未显示指定 super(),系统会自动调用父类中没有参数的构造方法。
若既没有指定super()又没有无参构造函数,程序执行时会报错。
所以解决方法有两个:一是加上无参构造函数。二是在写好的构造函数中加上super()。
于是我按照要求加上无参构造函数,执行代码,果然可以了。
在这里插入图片描述

于是我又试了一下在有参构造函数加上super()
在这里插入图片描述结果竟然报错了,不是说两个都可以吗,为什么会报错?
原来是我用java对象来接收json字符串,要求必须要有无参构造函数,而若已有有参构造函数,就不会自动创建无参构造函数,需要自己新建一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值