私は生成する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)」チェックを外します。(nullオブジェクトは常に失敗するため、冗長instanceofです。)悪い考えである理由はありますか?
x instanceof SomeClass場合、式はfalsexですnull。したがって、2番目の構文はnullチェックを必要としません。