Der Operator instanceOf benötigt keine expliziten Nullprüfungen, da keine Nullzeigerausnahme ausgelöst wird, wenn der Operand null ist.
Zur Laufzeit ist das Ergebnis des instanceOf-Operators wahr, wenn der Wert des relationalen Ausdrucks nicht null ist und die Referenz in den Referenztyp umgewandelt werden kann, ohne dass eine Klassenausnahme ausgelöst wird.
Wenn der Operand null ist, gibt der Operator instanceOf false zurück, und daher sind explizite Nullprüfungen nicht erforderlich.
Betrachten Sie das folgende Beispiel,
public static void main(String[] args) {
if(a != null && a instanceof ArrayList){ //Violation
System.out.println("In if block");
}
else
{
System.out.println("In else block");
}
}
Die korrekte Verwendung von instanceOf wird, wie unten gezeigt,
public static void main(String[] args) {
if(a instanceof ArrayList){ //Correct way
System.out.println("In if block");
}
else
{
System.out.println("In else block");
}
}
+1 JLS: Zur Laufzeit ist das Ergebnis des Operators instanceof wahr, wenn die Der Wert der RelationalExpression ist nicht null, und die Referenz kann (15.16) in den ReferenceType umgewandelt werden, ohne dass eine ClassCastException ausgelöst wird. Ansonsten ist das Ergebnis falsch. http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#80289 – barrowc
@barrowc Pin zeigte auf den Punkt! – naikus
Ich programmiere Java seit '97 und das war neu für mich. Danke, +1! –