Jackson Polymorphic Deserialization basierend auf Enum

Ich arbeite mitJacksonPolymorphicDeserializationDies ist mein Code, der in die richtige Klasse deserialisiert wird, basierend auf der Eigenschaft '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;
    }   
}

Es funktioniert einwandfrei und mein json verwandelt sich in die erwartete Klasse gemäß dem Wert 'Typ'.

Ich überlege jedoch, die Eigenschaft 'type' von String nach Enum zu verschieben. Dies ist mein neuer Code mit dieser Änderung:

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

und die Aufzählung:

public enum EventType {
    SPECIAL_EVENT_1,
    SPECIAL_EVENT_2,
    EVENT;
}

Das Problem ist, dass dieser zweite Ansatz nicht funktioniert ... eine Idee, warum ??? kann ich hier Enum verwenden ???

Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage