首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dozer允许从Enum转换到Enum吗?

Dozer允许从Enum转换到Enum吗?
EN

Stack Overflow用户
提问于 2017-05-04 11:36:54
回答 1查看 1.3K关注 0票数 1

2项活动:

代码语言:javascript
运行
复制
enum Source {

    WINTER,
    SPRING,
    SUMMER,
    AUTUMN
}

代码语言:javascript
运行
复制
enum Dest {

    WINTER,
    SPRING,
    SUMMER,
    AUTUMN
}

尝试使用SourceDest转换为Dozer

代码语言:javascript
运行
复制
DozerBeanMapper mapper = new DozerBeanMapper();

mapper.map(Source.WINTER, Dest.class);

线程"main“org.dozer.MappingException中的异常: java.lang.NoSuchMethodException: Dest.< init >()

但是当我尝试转换包含上面提到的枚举的复杂对象时,Dozer成功地转换了它。

那么,既然Enum不是复杂对象的属性,为什么Dozer不能将它们转换为Enum呢?

EN

回答 1

Stack Overflow用户

发布于 2017-05-04 17:19:52

Dozer不能映射枚举,因为它依赖于默认的无参数公共构造函数的存在。只有当它们是较大POJO的一部分时,才能映射它们。例如:

代码语言:javascript
运行
复制
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;
  }

}

代码语言:javascript
运行
复制
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;
  }

}

现在,这将起作用:

代码语言:javascript
运行
复制
SourceClass source = new SourceClass();
source.setSeason(Source.AUTUMN);

DestClass dest = mapper.map(source, DestClass.class);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43781819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档