gpt4 book ai didi

java - Dozer 是否允许从 Enum 转换为 Enum?

转载 作者:行者123 更新时间:2023-11-29 04:31:00 26 4
gpt4 key购买 nike

2枚举:

enum Source {

WINTER,
SPRING,
SUMMER,
AUTUMN
}

enum Dest {

WINTER,
SPRING,
SUMMER,
AUTUMN
}

尝试使用 DozerSource 转换为 Dest:

DozerBeanMapper mapper = new DozerBeanMapper();

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

Exception in thread "main" org.dozer.MappingException: java.lang.NoSuchMethodException: Dest.< init >()

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

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

最佳答案

Dozer 无法映射枚举,因为它依赖于默认无参数公共(public)构造函数的存在。只有当它们是更大的 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);

关于java - Dozer 是否允许从 Enum 转换为 Enum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43781819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com