Ich verwende Eclipse zum Generieren von .equals()
und .hashCode()
und es gibt eine Option mit der Bezeichnung "Verwenden Sie 'instanceof' zum Vergleichen von Typen". Standardmäßig ist diese Option deaktiviert und wird .getClass()
zum Vergleichen von Typen verwendet. Gibt es einen Grund , warum ich es vorziehen sollte .getClass()
über instanceof
?
Ohne zu verwenden instanceof
:
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Verwenden von instanceof
:
if (obj == null)
return false;
if (!(obj instanceof MyClass))
return false;
Normalerweise überprüfe ich die instanceof
Option und gehe dann hinein und entferne den " if (obj == null)
" Scheck. (Es ist redundant, da Nullobjekte immer fehlschlagen instanceof
.) Gibt es einen Grund, der eine schlechte Idee ist?
x instanceof SomeClass
ist falsch , wennx
istnull
. Daher benötigt die zweite Syntax keine Nullprüfung.