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