can only instantiate non-static inner class by using default, no-argument constructor

写了一个新的接口,在用POSTMAN工具调试本地接口的时候,接口报错:

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `com.ncic.eam.component.dto.mobileapproval.other.MobileApprovalDoUpdateParameter$Data` (although at least one Creator exists): can only instantiate non-static inner class by using default, no-argument constructor; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.ncic.eam.component.dto.mobileapproval.other.MobileApprovalDoUpdateParameter$Data` (although at least one Creator exists): can only instantiate non-static inner class by using default, no-argument constructor\n at [Source: (PushbackInputStream); line: 6, column: 13] (through reference chain: com.ncic.eam.component.dto.mobileapproval.other.MobileApprovalDoUpdateParameter[\"data\"]->java.util.ArrayList[0])

原因是自己定义的入参比较复杂,所以使用了内部类方式接收

public class MobileApprovalDoUpdateParameter extends MobileApprovalBaseParameter implements Serializable {


	public String id;


	
	public String userCode;

	/**
	 * “EDIT_FORM”审批域内数据,取出不可编辑项,保留修改域结构。
	 */
	public List<Data> data;

	// get  set 方法
	//....


	public class Data {
		public String id;
		public String label;
		public String type;
		public List<Item> items;

		
		//set get  方法......
		//.......

问题本质为:内部非静态类无法实例化

你需要做两件事:
1、给内部类前面加上static
2、给内部类加上默认构造函数

public class MobileApprovalDoUpdateParameter extends MobileApprovalBaseParameter implements Serializable {
	public String id;
	public String userCode;
	public List<Data> data;
	public MobileApprovalDoUpdateParameter(){
	}

	// get  set 方法
	//....

	public static class Data {
		public String id;
		public String label;
		public String type;
		public List<Item> items;
		public Data(){
		}
		// get  set 方法
		//....
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值