2016-10-20 3 views
1

変数/オブジェクトがnullであるかどうかを確認したい場合や、変数/オブジェクトがある条件を満たすかどうかを確認したい場合は、ネストされたif文を避けることはできますか?nullとパラメータ条件の場合はネストされないようにしてください

これを処理する独自の方法を定義することなく、このステートメントのonelinerを実行できますか?

+3

"明らかにobjがnullの場合は失敗します。" - 試しましたか?... – Sayse

+1

はい、これは短絡と呼ばれています。 http://stackoverflow.com/questions/8759868/java-logical-operator-short-circuiting – uoyilmaz

答えて

4

あなたはまた、(Javaで)

"test".equals(obj) 

この方法を試すことができ、あなたが明示的にnullのチェックを行う必要はありません、

+0

まさに私が探していたもの、ありがとう。 – user2925656

0

ifの代わりに論理&&を使用してください。 &&は、第1の条件が真である場合にのみ第2の条件を評価する(これがネストされた場合と同じこと)。だから、obj.equals("test")は、最初の条件が真すなわちある場合にのみ評価されます。、obj!=null

if(obj!=null && obj.equals("test")) 
{ 
    // do something; 
} 
+0

OBJ == nullの – user2925656

+0

いいえ、それは彼が使用しているしないのであれば、これはヌル例外をスローします&& –

+0

@ user2925656:これをチェック:xと&yの演算は、xが真である場合にのみyが評価されることを除いて、xとyの演算に対応します。 –

0

はい、あなたがすることができます。

しかし、ヌルをチェックし、あなたのオブジェクトがnullの場合それが壊れるそして、最初次のようになります。

var obj = "test"; 
if(obj != null && obj.equals("test")){ 
    // do something; 
} 
2

をあなたはヌル・条件演算子?の使用とヌル・合体演算子を作ることができます??

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#?)は認識されません。

1

私はあなたがconditional statementsの短絡に慣れるために提案します

次のよう&&を使用して条件を呼び出します場合:

if (obj != null && obj.Equals("test")) 
{ 
    //do something; 
} 

obj == nullが最初のパラメータにfalseを返し、2番目のパラメータである&&のステートメントをチェックしないため、例外は発生しません。

同じロジックが||に実装されています。最初の引数がtrueの場合、別の引数はチェックされません。

ショートした場合についてもjavaに実装されているので、あなたは両方c#java&&演算子のシーケンスとして、ネストされたif Sを実装することができます。

0

オペレータ& &はそれをすることを許可することができます。

if(obj!=null && obj.equals("test")){ 
    //do something 
} 
関連する問題