ロンボクセッターメソッドをオーバーライドする方法

デッドプール :

私は私のプロジェクトや世代でロンボクを使用していますSettersし、Getters使用@Settersして@GettersPOJOクラスの上に注釈を。私は、プロパティのセッターメソッドをオーバーライドしようとしているが、それは働いていません

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);

代わりに、直接セッターをテストします。そして、それが問題です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=136541&siteId=1