2项活动:
enum Source {
WINTER,
SPRING,
SUMMER,
AUTUMN
}
和
enum Dest {
WINTER,
SPRING,
SUMMER,
AUTUMN
}
尝试使用Source
将Dest
转换为Dozer
DozerBeanMapper mapper = new DozerBeanMapper();
mapper.map(Source.WINTER, Dest.class);
线程"main“org.dozer.MappingException中的异常: java.lang.NoSuchMethodException: Dest.< init >()
但是当我尝试转换包含上面提到的枚举的复杂对象时,Dozer成功地转换了它。
那么,既然Enum不是复杂对象的属性,为什么Dozer不能将它们转换为Enum呢?
发布于 2017-05-04 17:19:52
Dozer不能映射枚举,因为它依赖于默认的无参数公共构造函数的存在。只有当它们是较大POJO的一部分时,才能映射它们。例如:
enum Source {
WINTER,
SPRING,
SUMMER,
AUTUMN
}
public class SourceClass{
private Source season;
public Source getSeason() {
return season;
}
public void setSeason(Source season) {
this.season = season;
}
}
和
enum Dest {
WINTER,
SPRING,
SUMMER,
AUTUMN
}
public class DestClass{
private Dest season;
public Dest getSeason() {
return season;
}
public void setSeason(Dest season) {
this.season = season;
}
}
现在,这将起作用:
SourceClass source = new SourceClass();
source.setSeason(Source.AUTUMN);
DestClass dest = mapper.map(source, DestClass.class);
https://stackoverflow.com/questions/43781819
复制相似问题