Używam Eclipse do generowania .equals()
i .hashCode()
, i jest opcja oznaczona jako „Użyj„ instanceof ”, aby porównać typy”. Domyślnie ta opcja jest odznaczona i używana .getClass()
do porównywania typów. Czy jest jakiś powód powinien Wolę .getClass()
ponad instanceof
?
Bez użycia instanceof
:
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Używając instanceof
:
if (obj == null)
return false;
if (!(obj instanceof MyClass))
return false;
Zwykle zaznaczam instanceof
opcję, a następnie wchodzę i usuwam if (obj == null)
zaznaczenie. (Jest to zbędne, ponieważ puste obiekty zawsze zawodzą instanceof
). Czy jest jakiś powód, dla którego to zły pomysł?
x instanceof SomeClass
jest fałszywe, jeślix
jestnull
. W związku z tym druga składnia nie wymaga sprawdzania wartości null.