Java deserialise json实现抽象对象开放封闭原则

时间:2016-11-08 21:21:44

标签: java json jackson

我有扩展基类的Varchar,Integer和Float的多态类型。

我必须将以下内容添加到基类中,以便我可以在rest api中使用它。

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(name = "VarcharField", value = VarcharField.class),
        @JsonSubTypes.Type(name = "IntegerField", value = IntegerField.class),
        @JsonSubTypes.Type(name = "FloatField", value = FloatField.class)
})
public abstract class Field<T> implements FieldType<T>, Serializable {

我的问题在于它打破了开放的封闭原则,无论如何要解决这个问题,也许是外部配置?

1 个答案:

答案 0 :(得分:1)

如果使用JsonTypeInfo.Id.CLASSJsonTypeInfo.Id.MINIMAL_CLASS,则无需指定子类型。

相关问题