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 instanceofopcję, 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 SomeClassjest fałszywe, jeślixjestnull. W związku z tym druga składnia nie wymaga sprawdzania wartości null.