Caused by: java.lang.NoSuchMethodException: Property 'XX' has no setter method in class

1.情景展示

在将Map对象转成实体类的时候,报错信息如下:

Caused by: java.lang.NoSuchMethodException: Property 'name' has no setter method in class 'class code.marydon.encapsulation.dataType.People' 

2.具体分析

我对Map对象转实体类进行了二次封装:

具体实现如下:

我使用的是:org.apache.commons.beanutils.BeanUtils,通过它完成map到实体类的转换。

people类具体如下:

运行之后,就是报开头的错误;

起初,我以为是不支持lomobok的注解,手动生成set方法后,还是报原来的错误。

3.解决方案

我们知道,在java当中,类、方法、成员变量的访问级别有四种,分别是:

public(公共访问级别):能在任何位置,被任何类访问到;

protected(子类访问级别):可以同一包下的类访问到,也可以被子类访问到;

default(包访问级别):不带任何访问关键词修饰,只能被同一包下的其它类访问到;

private(当前类访问级别):当用来修饰类时,不能被其它类访问;当用来修饰方法时,只能被同一类的其它方法调用。

类名使用public修饰即可

Map<String, Object> map = new HashMap<>(2);
map.put("name", "Marydon");
map.put("age", 18);
Girl girl = MapUtils.toJavaBean(Girl.class, map);
System.out.println(girl.toString());

转换成功

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2022-04-27 16:17  Marydon  阅读(424)  评论(0编辑  收藏  举报