web-dev-qa-db-ja.com

制約検証のポイント@Nullとは何ですか?

私は 利用可能な制約のリスト を確認していましたjavax.validationパッケージと、フィールドにnullを強制する注釈 @ Null があることに気付きました。

私はそれがnullであることをすでに知っている場合、それを私のフィールドに追加するポイントが何であるかを理解していません。

たとえば、次のクラスを見てください。

public class MyClass{

    @NotNull
    private String myString1;

    @Null
    private String myString2;

    // getter setters...
}

@NotNull完全に意味があります。期待しないmyString1をnullにします。だが @NullmyString2役に立たない。常にnullであるべきフィールドを持つことのポイントは何ですか。

15
Arashsoft

「検証グループ」と組み合わせて_@Null_を使用して、特定の場合にのみnull制約を検証することができます。

Hibernateが提供する検証グループに関する適切な説明と例

検証グループをシンプルなインターフェースとして定義します

_public interface FirstSave {}
_

それを制約で使用します

_public class MyClass {

    @Null(groups = FirstSave.class)
    private LocalDate lastUpdate;
}
_

次に、lastUpdateでない場合nullを呼び出し、validator.validate(myClassInstance)を呼び出さない場合制約違反が発生します(デフォルトグループが使用されました)が、validator.validate(myClassInstance, FirstSave.class)を呼び出します。

また、アノテーションの使用方法について独自の実装を提供する可能性もあります。つまり、検証メソッドが_@Null_でアノテーションされていることを確認しました。ここで、メソッドによって返されるnullは、すべてが問題ないことを意味します。バックグラウンドで、アノテーション付きメソッドがnullではない結果を返した場合の対処方法についてはおそらくカスタム実装がありましたが、コードには深く入りませんでした...

4
ThreeDots