2017-05-04 13 views
0

2列挙型:DozerはEnumからEnumに変換できますか?

enum Source { 

    WINTER, 
    SPRING, 
    SUMMER, 
    AUTUMN 
} 

DozerDestSourceを変換しようと
enum Dest { 

    WINTER, 
    SPRING, 
    SUMMER, 
    AUTUMN 
} 

DozerBeanMapper mapper = new DozerBeanMapper(); 

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

例外スレッド "メイン" org.dozer.MappingExceptionで: java.lang.NoSuchMethodE xception:Dest。 < init>()

しかし、上記の列挙型を含む複雑なオブジェクトを変換しようとすると、Dozerは正常に変換しました。

複雑なオブジェクトのプロパティではないため、DoumをEnumに変換できないのはなぜですか?

答えて

1

デフォルトの引数なしパブリックコンストラクタの存在に依存するため、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); 
関連する問題