2016-11-08 5 views
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 { 

私の問題は、それはおそらく、この問題を回避するために、とにかくあり、外部設定を開いて、閉じた原則を破るということですか?

+0

オープン・クローズの原理がどのように壊れているかを説明します。私はそうではない、あなたの問題が何であるかを知りたいと言っているわけではありません。すべてのサブクラスを列挙したくない場合は、 'JsonTypeInfo.Id.CLASS'または' JsonTypeInfo.Id.MINIMAL_CLASS'を使用してください。 – lexicore

+0

私は新しいフィールドを追加する必要があるたびに、抽象クラスを変更する必要がありますが、非常にわずかですが、変更を行うためにクラスを閉じなければならないと感じています。 –

答えて

1

JsonTypeInfo.Id.CLASSまたはJsonTypeInfo.Id.MINIMAL_CLASSを使用する場合は、サブタイプを指定する必要はありません。

関連する問題