あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

FindBugs の @NonNull @CheckForNull アノテーション

FindBugs の @NonNull アノテーションで引数や戻り値が null でないことを明示すると、可読性もよくなるし、間違って null の引数を指定したり、null を返すコードを書くと、FindBugs の指摘が入るので、不要な null チェックの冗長なコードが減少する。

import edu.umd.cs.findbugs.annotations.NonNull;
..
@NonNull public String get(@NonNull String key) {
..
  return ..
}
..

逆に、どうしても null の引数指定や null の戻り値が発生する場合は
@CheckForNull アノテーションを付けて null チェックコードを書くように明示することができる。こちらは null チェックがないと FindBugs が指摘してくれる。

import edu.umd.cs.findbugs.annotations.CheckForNull;
..
@CheckForNull private String get(@CheckForNull String key) {
  if (key == null) {
     ..
  }
  if (..) return null;
  return value;
}
..