Lombokの@NonNullアノテーションを、フィールド変数に適用してみます。
Java Lombokの@NonNullアノテーションを使うサンプル
Lombokの@NonNullアノテーションを持ったフィールド変数を作成。
Lombokで生成したコンストラクタ、セッターでnullをセットします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package lombok; @RequiredArgsConstructor @Setter @Getter public class NonNullTest { @NonNull private String a; public static void main(String[] args) { try { //コンストラクタでNullPointerExceptionが発生する NonNullTest t = new NonNullTest(null); //SetterでもNullPointerExceptionが発生する t.setA(null); } catch(Exception e) { e.printStackTrace(); } } } |
実行結果
Lombokで生成したコンストラクタを実行した際に、例外が発生します。
1 2 3 | java.lang.NullPointerException: a is marked non-null but is null at lombok.NonNullTest.<init>(NonNullTest.java:3) at lombok.NonNullTest.main(NonNullTest.java:15) |
サンプルの解説
Lombokの@NonNullをフィールド変数に設定すると、Lombokで生成したコンストラクタ(@RequiredArgsConstructor)、セッター(@Setter)からnullをセットしようとしたときに、NullPointerExceptionが発生するようになります。
この例では、コンストラクタでのnullセットとセッターでのnullセットをしていますが、コンストラクタで引っかかるのでコンストラクタで例外が発生しています。
コンストラクタでのnullセットをやめると、セッター側で引っかかるようになります。
チェックには、便利ですね。
ただし、Lombokで生成していないコンストラクタ、セッターなどには適用されないので、注意が必要ですね。
※このコードを使用するには、別途Lombokの入手が必要です。
入手方法などはこちらの記事に書いてあります。