HOWTO · Java

Java - メソッド引数で NotNull アノテーションを使用する

このチュートリアルでは、@NotNull アノテーションについて説明し、Java のメソッド引数でそれを使用する方法を示します。

このページの内容

今日のチュートリアルでは、@NotNull アノテーションについて説明し、コード例を使用して、Java での作業中にメソッド引数でそれを使用する方法を示します。

@NotNull アノテーションの概要

変数またはメソッドが null 値を返さないように設定したい場合は、@NotNull アノテーションを使用できます。 これは標準の JSR アノテーションであり、アノテーション付きのプロパティ値が null でないかどうかを検証します。

@NotNull の特徴は、メソッドを @NotNull に設定した場合、null 値を返さないことと、変数を @NotNull に設定した場合、null を保持できないことです。 価値。

重要な点は、親メソッドに @NotNull が含まれている場合、その子に @NotNull の注釈を付ける必要があることです。 次に、以下のコードフェンスにジャンプして、メソッド引数での使用を学びましょう。

メソッド引数で @NotNull アノテーションを使用する

コード例:

import javax.validation.constraints.NotNull;

public class JavaNotNull {
  int sum(@NotNull int a, int b) {
    return a + b;
  }

  public static void main(String args[]) {
    JavaNotNull jnn = new JavaNotNull();
    System.out.println("The sum is: " + jnn.sum(5, 5));
  }
}

出力:

The sum is: 10

上記の例では、最初に @NotNull に必要なパッケージを import javax.validation.constraints.NotNull; として含め、その後、sum() という名前のメソッドを作成し、その値を として設定しました。 @NotNull.

sum() メソッドは、2つの変数間の合計演算の結果を返すことに注意してください。 次に、JavaNotNull クラスのオブジェクトを作成し、そのメソッド sum() を呼び出して上記の出力を取得しました。

上記の例の sum()null 変数を渡そうとするとどうなるか考えていますか?

答えは、上記の例ではメソッド変数を @NotNull に設定しているため、null 値を受け取ることができないからです。 次の更新された例では、null 値を sum() メソッドに渡して何が起こるかを確認します。

更新されたサンプル コード:

import javax.validation.constraints.NotNull;

public class JavaNotNull {
  int add(@NotNull int a, int b) {
    return a + b;
  }

  public static void main(String args[]) {
    JavaNotNull jnn = new JavaNotNull();
    // We are trying to pass a null value here
    System.out.println("The sum is: " + jnn.add(null, 5));
  }
}

ここで、上記のコード例を実行しようとすると、次のエラーが発生します。 メソッドを @NotNull に設定すると、null 値を受け取ることができないためです。

error: Class names, 'JavaNotNull', are only accepted if annotation processing is explicitly requested
1 error

null 値でメソッドを呼び出し、そのメソッドが @NotNull に設定されている場合は、重要な注意事項があります。 実行時に NullPointerException が発生する可能性があります。