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());
转换成功
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/16199444.html