変数/オブジェクトがnull
であるかどうかを確認したい場合や、変数/オブジェクトがある条件を満たすかどうかを確認したい場合は、ネストされたif
文を避けることはできますか?nullとパラメータ条件の場合はネストされないようにしてください
これを処理する独自の方法を定義することなく、このステートメントのonelinerを実行できますか?
変数/オブジェクトがnull
であるかどうかを確認したい場合や、変数/オブジェクトがある条件を満たすかどうかを確認したい場合は、ネストされたif
文を避けることはできますか?nullとパラメータ条件の場合はネストされないようにしてください
これを処理する独自の方法を定義することなく、このステートメントのonelinerを実行できますか?
あなたはまた、(Javaで)
"test".equals(obj)
この方法を試すことができ、あなたが明示的にnullのチェックを行う必要はありません、
まさに私が探していたもの、ありがとう。 – user2925656
if
の代わりに論理&&
を使用してください。 &&
は、第1の条件が真である場合にのみ第2の条件を評価する(これがネストされた場合と同じこと)。だから、obj.equals("test")
は、最初の条件が真すなわちある場合にのみ評価されます。、obj!=null
if(obj!=null && obj.equals("test"))
{
// do something;
}
OBJ == nullの – user2925656
いいえ、それは彼が使用しているしないのであれば、これはヌル例外をスローします&& –
@ user2925656:これをチェック:xと&yの演算は、xが真である場合にのみyが評価されることを除いて、xとyの演算に対応します。 –
はい、あなたがすることができます。
しかし、ヌルをチェックし、あなたのオブジェクトがnullの場合それが壊れるそして、最初次のようになります。
var obj = "test";
if(obj != null && obj.equals("test")){
// do something;
}
をあなたはヌル・条件演算子?
の使用とヌル・合体演算子を作ることができます??
:
if(obj?.Equals("test") ?? false)
{
// do something
}
obj?.Equals("test")
戻りnull
場合はnull
であり、??
は、??
の値がnull
の場合、false
をifステートメントに割り当てます。
しかし、残念ながら、これはC#でのみ動作し、Javaでは動作しません。 Javaでは、条件演算子?
のみが認識されますが、NULL合体演算子??
(is there a Java equivalent to null coalescing operator (??) in C#?)は認識されません。
私はあなたがconditional statementsの短絡に慣れるために提案します
次のよう&&
を使用して条件を呼び出します場合:
if (obj != null && obj.Equals("test"))
{
//do something;
}
を
obj == null
が最初のパラメータにfalse
を返し、2番目のパラメータである&&
のステートメントをチェックしないため、例外は発生しません。
同じロジックが||
に実装されています。最初の引数がtrue
の場合、別の引数はチェックされません。
ショートした場合についてもjava
に実装されているので、あなたは両方c#
とjava
で&&
演算子のシーケンスとして、ネストされたif
Sを実装することができます。
オペレータ& &はそれをすることを許可することができます。
if(obj!=null && obj.equals("test")){
//do something
}
"明らかにobjがnullの場合は失敗します。" - 試しましたか?... – Sayse
はい、これは短絡と呼ばれています。 http://stackoverflow.com/questions/8759868/java-logical-operator-short-circuiting – uoyilmaz