LoginSignup
29
24

More than 5 years have passed since last update.

NullPointerExceptionの防止にデフォルト@Nullableにしよう

Last updated at Posted at 2016-05-11

前提

Support Annotationというライブラリ(Support Libraryについてくる)にあるアノテーションの@Nullableをつけたメンバ変数などのメソッドなどにアクセスしようとするとAndroid Studio上で警告が表示されます。(逆に@NonNullがついていれば警告は表示されません。)
これを使っていけばある程度NullPointerExceptionを防止できます。
image

動機

@Nullable@NonNullをつけようと思っても癖にならずサボってしまっていて自分には面倒で続いていませんでした。。
そこで、いろんな変数がデフォルトで@Nullable扱いになれば警告が出まくって、気をつけるようになるのではということで、そのオプションを探してみました。

設定方法

File | Settings | Editor | Inspections | Probable bugs | Constant conditions & exceptionsで
Treat non-annotated members and parameters as @Nullableにチェックを付けます
image

適用

適用前 image
適用後 image

まとめ

この警告が出ないように直していくことでNPEが少しは改善していけるのではないかと思います。
ただAndroidのフレームワークのメソッドも@NonNullなどを導入してくれていないメソッドが結構あるので、防止しきれない部分や冗長なNullチェックが必要になる部分もあるようなので、そこは気をつけていく必要があります。
Analyze | Infer Nullity Annotationでうまく自動で@Nullable@NonNullのアノテーションを入れられるようなのですが、自分の環境ではなぜか読み込みが終わらずうまく動かなかったです。
Kotlinを使えばこういうのも言語仕様的に解決してくれているようなので、Kotlinが利用できる人はKotlinを利用するのをおすすめします。
NPEをこうやって防いでいるなどの知見がほしいのでもっといい感じの方法を知っている方はお教えください。

29
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
24