我正在使用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
。)是否有任何不好的主意?
x instanceof SomeClass
如果x
为,则表达式为falsenull
。因此,第二种语法不需要null检查。