Я использую Eclipse для генерации .equals()
и .hashCode()
, и есть опция с пометкой «Использовать instanceof» для сравнения типов ». По умолчанию этот параметр отключен и используется .getClass()
для сравнения типов. Есть ли причина, по которой я бы предпочел .getClass()
над instanceof
?
Без использования instanceof
:
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Использование instanceof
:
if (obj == null)
return false;
if (!(obj instanceof MyClass))
return false;
Я обычно проверяю опцию instanceof
, затем захожу и убираю галочку "if (obj == null)
". (Это избыточно, поскольку нулевые объекты всегда будут давать сбой instanceof
.) Есть ли причина, по которой это плохая идея?