2017-05-04 2 views
0

2 Enums:Est-ce que Dozer permet la conversion de Enum en Enum?

enum Source { 

    WINTER, 
    SPRING, 
    SUMMER, 
    AUTUMN 
} 

et

enum Dest { 

    WINTER, 
    SPRING, 
    SUMMER, 
    AUTUMN 
} 

tentative de conversion Source-Dest avec Dozer:

DozerBeanMapper mapper = new DozerBeanMapper(); 

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

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

Mais lorsque j'ai essayé de convertir des objets complexes contenant les énumérations mentionnées ci-dessus, Dozer l'a converti avec succès. Donc, pourquoi Dozer ne peut-il pas convertir Enum en Enum quand ce ne sont pas des propriétés d'objets complexes?

Répondre

1

Dozer ne peut pas mapper des énumérations car il repose sur l'existence du constructeur public sans argument par défaut. Ils ne peuvent être mappés que lorsqu'ils font partie d'un POJO plus grand. Par exemple:

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; 
    } 

} 

et

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; 
    } 

} 

Maintenant, cela fonctionnera:

SourceClass source = new SourceClass(); 
source.setSeason(Source.AUTUMN); 

DestClass dest = mapper.map(source, DestClass.class);