Java Lombok | メソッド引数のnullチェック - @NonNull
@NonNull
@NonNullでメソッドの引数にアノテーションを付けると、nullチェックが自動生成される。
package com.devkuma.tutorial.lombok;
import lombok.NonNull;
public class NonNullTutorial {
public static void main(String[] args) {
method("devkuma");
method(null);
}
private static void method(@NonNull String value) {
System.out.println(value);
}
}
実行結果:
devkuma
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.1.1/userguide/command_line_interface.html#sec:command_line_warnings
2 actionable tasks: 2 executed
Exception in thread "main" java.lang.NullPointerException: value is marked non-null but is null
at com.devkuma.tutorial.lombok.NonNullTutorial.method(NonNullTutorial.java:11)
at com.devkuma.tutorial.lombok.NonNullTutorial.main(NonNullTutorial.java:8)
上のコードは@NonNullによって次のように変換される。
package com.devkuma.tutorial.lombok;
import lombok.NonNull;
public class NonNullTutorial {
public NonNullTutorial() {
}
public static void main(String[] args) {
method("devkuma");
method((String)null);
}
private static void method(@NonNull String value) {
if (value == null) {
throw new NullPointerException("value is marked non-null but is null");
} else {
System.out.println(value);
}
}
}
value変数に対するnullチェックが自動生成されていることが分かる。