我使用 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
。)有什么理由说这是个坏主意吗?