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

MD Aminul Islam 2023年10月12日
  1. @NotNull アノテーションの概要
  2. メソッド引数で @NotNull アノテーションを使用する
Java - メソッド引数で NotNull アノテーションを使用する

今日のチュートリアルでは、@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 が発生する可能性があります。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn