if (a! = null && eine Instanz von A) ... oder if (eine Instanz von A)

7

Für die folgenden Bedingungen:

%Vor%

oder

%Vor%

Gibt es einen Vorteil (z. B. hinsichtlich der Leistung), zuerst nach null zu suchen? Beide Bedingungen sollten im Ergebnis gleich sein.

    
Dmitriy 25.07.2010, 05:21
quelle

5 Antworten

18

Kein Vorteil, Sie können nur mit

machen %Vor%

Dies wird return als false ausgewertet, wenn a null

ist     
naikus 25.07.2010 05:25
quelle
4

Die JVM muss selbst nach Null suchen. Es macht nicht viel Sinn, es zweimal zu tun.

    
EJP 25.07.2010 06:02
quelle
2

if(a instanceof A) ist genug.

Das Muster if(a!=null && expr) wird verwendet, wenn expr ein NullPointerException wirft, wenn a null ist. a instanceof A wirft keine NPE und gibt nur false zurück, wenn a null ist.

    
samitgaur 25.07.2010 05:41
quelle
0

Ich bezweifle ernsthaft, dass es einen Vorteil hat, zuerst nach Null zu suchen. Es hängt davon ab, wie die VM den Instant-Check implementiert ... Wahrscheinlichkeiten sind, dass es das if selbst als ersten Teil des Codes tut.

    
TofuBeer 25.07.2010 05:25
quelle
0

Der instanceOf-Operator benötigt keine expliziten Null-Checks, da keine Nullzeiger-Ausnahme ausgelöst wird, wenn der Operand null ist.

Zur Laufzeit ist das Ergebnis des instanceOf-Operators "true", wenn der Wert des relationalen Ausdrucks nicht null ist und die Referenz in den Referenztyp umgewandelt werden kann, ohne dass eine Klassen-Cast-Ausnahme ausgelöst wird.

Wenn der Operand null ist, gibt der instanceOf-Operator false zurück, und daher sind explizite Nullprüfungen nicht erforderlich.

Betrachten Sie das folgende Beispiel,

%Vor%

Die korrekte Verwendung von instanceOf ist wie folgt,

%Vor%     
Nikhil Kumar 01.04.2015 08:02
quelle

Tags und Links