2016-10-20 1 views
1

Ist es möglich verschachtelte if Anweisungen zu vermeiden, während ich überprüfen möchte, ob Variable/Objekt null ist und wenn Variable/Objekt eine Bedingung erfüllen z.Vermeiden verschachtelt, wenn für null und Parameter Bedingung

Ist es möglich, oneliner dieser Anweisung zu tun, ohne eigene Methode zu definieren, die das behandelt?

+3

"wird offensichtlich fehlschlagen, wenn obj null ist." - Haben Sie es versucht? .. – Sayse

+1

Ja, es heißt Kurzschluss. Überprüfen Sie dies: http://StackOverflow.com/Questions/8759868/java-logical-operator-short-circuiting – uoyilmaz

Antwort

4

können Sie auch versuchen (in Java)

"test".equals(obj) 

auf diese Weise, Sie müssen keine explizite NULL-Prüfung zu tun,

+0

Genau das, was ich gesucht habe, danke. – user2925656

0

Verwenden Sie Logisch && stattdessen für die Verschachtelung if. Die && wertet die zweite Bedingung nur dann aus, wenn die erste Bedingung wahr ist (dasselbe, was verschachtelt wird). So obj.equals("test") wird nur ausgewertet werden, wenn die erste Bedingung erfüllt, dh ist., obj!=null

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

Dies wird null Ausnahme werfen, wenn obj == null – user2925656

+0

Nein, es wird nicht, weil er && –

+0

@ user2925656 verwendet : Die Operation x && y entspricht der Operation x & y, nur dass y nur ausgewertet wird, wenn x wahr ist. –

0

Ja, Sie können.

Aber überprüfen null sollte erste sein, dann, wenn das Objekt null ist, würde es brechen:

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

Sie die Verwendung der Null Konditionaloperator ? und die Null Koaleszierstruktur Betreiber machen könnten ??:

if(obj?.Equals("test") ?? false) 
{ 
    // do something 
} 

Wo obj?.Equals("test") kehrt null wenn obj ist null und ?? weist der if-Anweisung false zu, wenn der Wert vor ??null ist.

Aber leider funktioniert das nur in C#, nicht in Java. Java kennt nur den bedingten Operator ?, aber nicht den Nullkoaleszenzoperator ?? (is there a Java equivalent to null coalescing operator (??) in C#?).

1

Ich schlage vor, Sie mit Kurzschluss conditional statements vertraut zu machen

Wenn Sie Ihre Bedingungen mit && wie folgt nennen:

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

Sie erhalten keine Ausnahme, denn wenn obj == null zurückgegeben wird, wird der erste Parameter false zurückgegeben und der zweite Parameter der &&-Anweisung nicht überprüft. Die gleiche Logik wird in || implementiert - wenn das erste Argument true ist, werden andere Argumente nicht geprüft.

Kurzschluss wird auch in java implementiert, so können Sie als Folge von && Operatoren sowohl in c# und java verschachtelten if s implementieren.

0

operator & & kann Ihnen erlauben, das zu tun.

if(obj!=null && obj.equals("test")){ 
    //do something 
} 
Verwandte Themen