Locked History Actions

guice/Manual/BestPractices/UseNullable

@Nullableを使用すべし

NullPointerExceptionが起こらないようにするため、null参照についての規則が必要である。 我々は以下のシンプルなルールを守ることによって、これに成功してきた。

  • すべてのパラメータは、明示的に指定されない限りnullではいけない

GoogleコレクションライブラリとJSR-305(訳注:Javaコードの静的解析ツールのために用いられるアノテーションの提案)はnullを制御するためのシンプルなAPIを提供している。 真っ先にnullを見つけて失敗させるために、Preconditions.checkNotNullを使うことができる。 なおかつ、nullが許されるパラメータには、@Nullableアノテーションをつけることができる。

import static com.google.common.base.Preconditions.checkNotNull;
import static javax.annotation.Nullable;

public class Person {
  ...

  public Person(String firstName, String lastName, @Nullable Phone phone) {
    this.firstName = checkNotNull(firstName, "firstName");
    this.lastName = checkNotNull(lastName, "lastName");
    this.phone = phone;
  }

Guiceはデフォルトでnullを禁止している。 つまり、nullの注入は拒否され、ProvisionException例外が派生する。 もし、あなたのクラスでnullが許される場合は、フィールドやパラメータを@Nullableをつけること。 Guiceは他の@Nullableアノテーションも認識する。 つまり、edu.umd.cs.findbugs.annotations.Nullableやjavax.annotation.Nullableである。