自問すべき重要なこと:null
と empty は、あなたがしていることと論理的に同等ですか?
もしそうなら、あなたはこれを使いたいかもしれません:
if (currentTimeslot == null || currentTimeslot.isEmpty()) {
// Do stuff
}
そのステートメントの前半が と評価されたtrue
場合、Java は後半を気にしないため、null ポインター例外から保護されます。
別のアプローチは、データを正規化することです。null
空の文字列を同じものとして扱いたい場合は、コードの早い段階で次のようにします。
if (currentTimeslot == null) currentTimeslot = "";
これで、使用するたびに防御的に null チェックする必要がなくなりました。
int
例外が発生する理由について: Java では、すべてのオブジェクト ( 、 などのプリミティブ型ではない変数boolean
) はnull
、初期化するまで * です。そのオブジェクトのメソッドまたはフィールドにアクセスしようとすると、実際にはまだ存在しないものにアクセスするようにコードに要求しているため、null ポインター例外が発生します。Java では、オブジェクトが早期に初期化されることを確認するか、(if (variable != null) { ... }
またはtry { ... } catch (NullPointerException npe) { ... }
ブロックを使用して) 多くの防御的な null チェックを実行して、発生している問題を正確に防止する必要があります。
null
*--もちろん、以外のもので初期化します。