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はヌルのいくつかのミスの使用について警告しますが、あなたに保証を与えていないヒューリスティックバグファインダです。