自問すべき重要なこと: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*--もちろん、以外のもので初期化します。