なぜ私はロンボク-注釈@NonNullを使うのでしょうか?

metters:

ロンボク島は提供しています注釈 @NonNull nullcheckを実行し、(別々に設定されていない場合)NPEをスローします。

で説明したように、私はそのアノテーションを使用する理由私は理解していないそのドキュメントの:

private String name;
public NonNullExample(@NonNull Person person) {
    super("Hello");
    if (person == null) {
      throw new NullPointerException("person is marked @NonNull but is null");
    }
    this.name = person.getName();
  }

NPEはとにかくスローされます。あなたは例外がNPEとは異なることにしたいならば芋アノテーションを使用するにはここでの唯一の理由があります。

編集:それはいけない、私は「制御」例外を明示的にので、スローされることを知っていますが、少なくとも、エラーメッセージのテキストは編集すべきですか?

mernst:

ような型注釈を書くことは@NonNull、いくつかの目的を果たします。

  • これは、あるドキュメント:それはJavadocのテキストよりも簡潔かつ正確な方法で、クライアントにメソッドの契約を伝えます。
  • それは可能ランタイムチェックを -である、バギークライアントのあなたの方法を誤って使用する場合、それはあなたのプログラムが(というより悪い何かをするよりも)有益なエラーメッセージでクラッシュすることを保証します。ロンボクは、実行時のチェックを書くために、プログラマを強制することなく、あなたのためにこれを行います。参照先の例では、単一でこれを行うには、2つの方法を示して@NonNull注釈または明示的なプログラマが書いた小切手とを。「バニラのJava」バージョンは、いずれかのタイプミス(浮遊有する@NonNullロンボクがそれを処理した後)、または番組コード。
  • それは可能コンパイル時のチェックを以下のようなツールチェッカーFrameworkには、コードがすることを保証できますない実行時にクラッシュします。以下のようなツールNullAwayエラーが発生しやすい、とのFindBugsはヌルのいくつかのミスの使用について警告しますが、あなたに保証を与えていないヒューリスティックバグファインダです。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=227084&siteId=1