Я использую 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
.) Есть ли причина, по которой плохая идея?