2016-05-08 2 views
0

@Setter注釈を変更して、ロンボクを介して構築されたすべての設定メソッドにカスタムロジックを追加する方法はありますか?Lombokによるカスタムセッター

私はいくつかのデフォルト値でフィールドを初期化したクラスを持っています。値がnullでない場合、フィールドの値を設定するだけです。

例、私はする必要があります私はジャージー更新要求クラスの@Setterのアノテーションを使用して、代わりの

if (request.getFoo() != null) { 
    this.foo = request.getFoo(); 
} 

like-事をやっている場合、例えば、

public void setFoo(int foo) { 
    if (foo != null) { 
     this.foo = foo; 
    } 
} 

をgenerates-何か直接行うことができます

this.setFoo(request.getFoo()); 

いくつかの結果があります。

答えて

0

あなたは、その後のコメントを解除it.Otherwiseあなたはロンボクからそれらを隠すために、@ lombok.experimental.Tolerateで任意のメソッドをマークできるロンボク島の@Setter & @Getterをコメントすることにより、独自のカスタムセッターを追加することができます。

1

私はあなたがnull値を許容するため、あなたの問題を解決していないIntegerの代わりintを、使用することを意図と仮定:)

一般的に、私はsetFooのロジックを変更するにはお勧めしません。サイレントモードでfooを任意の条件に設定しないと、その使用方法がバグや少なくとも誤解にさらされます。

私の提案は、明示的にsetFooIfNotNull(Integer foo)という名前のカスタムメソッドを使用することです。考えられる別の解決策は、フィールドに注釈@NonNullを付けて、NULL値の場合にNullPointerExceptionをスローすることです。フィールド上@NonNull(大文字小文字を区別しない)という名前の任意のアノテーションは以下のように を解釈している

:ロンボク@Setter注釈documentation 'small print'から

このフィールドは、これまでnullで保有していなければなりません。したがって、これらの アノテーションは、生成されたセッターに明示的なヌルチェックをもたらします。

関連する問題