デッドプール :
私は私のプロジェクトや世代でロンボクを使用していますSetters
し、Getters
使用@Setters
して@Getters
POJOクラスの上に注釈を。私は、プロパティのセッターメソッドをオーバーライドしようとしているが、それは働いていません
JSONのプロパティは、私はセッターメソッドにデフォルト値を設定する空またはnullである場合、私は確認したいです
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString
public class DefaultModel {
private String name;
@Setter(AccessLevel.NONE)private String age;
public void setAge(String age) {
if(age==null||age.trim().isEmpty()||age.equals("null")) {
this.age="10";
}else {
this.age=age;
}
}
}
ワーキングシナリオ:
{
"name":"some",
"age":null
}
{
"name":"some",
"age":"null"
}
{
"name":"some",
"age":" "
}
失敗したシナリオ:
{
"name":"some"
}
出力:
DefaultModel(name=some, age=null)
私も参考にし、以下のよ、ここが、運これまでのところ
maaartinus:
どちらのあなただけの私が見たことがないか、あなたはそれが間違ってテストしているバグを打ちます。
以下のような注釈
@Setter(AccessLevel.NONE) private String age;
フィールドレベルで実際に発生してからセッターを停止します。しかし、あなたはセッターを定義していることを考えると、あなたもそれを必要としません。明示的には@Setter
、あまりにも、世代を停止します。
私は、Eclipseの4.7.3aとロンボク1.18.0を使用して、あなたの例を試したし、あなたの(バギー)セッターが呼び出されます。私は数年にわたってロンボク多くを使用して、このようなバグに遭遇したことはありませんしてきました。
おそらく問題は、あなたのJSONのデシリアライザは、すべてのセッターを使用していないということです。私はあなたのような何かをテストしている、と思います
DefaultModel defaultModel = deserialize("{\"name\":\"some\"}", DefaultModel.class);
代わりに、直接セッターをテストします。そして、それが問題です。