0
基本クラスを拡張するVarchar、Integer、およびFloatの多型があります。Java deserialise json抽象オブジェクトのオープンの閉鎖原理を開く
残りの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 {
私の問題は、それはおそらく、この問題を回避するために、とにかくあり、外部設定を開いて、閉じた原則を破るということですか?
オープン・クローズの原理がどのように壊れているかを説明します。私はそうではない、あなたの問題が何であるかを知りたいと言っているわけではありません。すべてのサブクラスを列挙したくない場合は、 'JsonTypeInfo.Id.CLASS'または' JsonTypeInfo.Id.MINIMAL_CLASS'を使用してください。 – lexicore
私は新しいフィールドを追加する必要があるたびに、抽象クラスを変更する必要がありますが、非常にわずかですが、変更を行うためにクラスを閉じなければならないと感じています。 –