Jackson Polymorphic Deserialization na podstawie Enum

Pracuję zJacksonPolymorphicDeserialization, to jest mój kod, który przekształca do odpowiedniej klasy opartej na właściwości „type”:

@JsonTypeInfo(  
    use = JsonTypeInfo.Id.NAME,  
    include = JsonTypeInfo.As.PROPERTY,  
    property = "type",
    defaultImpl = Event.class, 
    visible = true)  
@JsonSubTypes({        
    @Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"), 
    @Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"), 
    })  
public abstract class AbstractEvent {

    private String type;

    public String getType() {
    return type;
    }

    public void setType(String type) {
    this.type = type;
    }   
}

Działa doskonale, a mój json zmienia się w oczekiwaną klasę zgodnie z wartością typu.

Jednak rozważam przeniesienie właściwości „type” z String na Enum, to jest mój nowy kod z tą zmianą:

@JsonTypeInfo(  
    use = JsonTypeInfo.Id.NAME,  
    include = JsonTypeInfo.As.PROPERTY,  
    property = "type",
    defaultImpl = Event.class, 
    visible = true)  
@JsonSubTypes({        
    @Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"), 
    @Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"), 
    })  
public abstract class AbstractEvent {

    private EventType type;

    public EventType getType() {
    return type;
    }

    public void setType(EventType type) {
    this.type = type;
    }   
}

i Enum:

public enum EventType {
    SPECIAL_EVENT_1,
    SPECIAL_EVENT_2,
    EVENT;
}

Problem polega na tym, że to drugie podejście nie działa ... jakikolwiek pomysł dlaczego ??? czy mogę użyć Enum tutaj ???

Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion