.equals() の生成における getClass() と instanceof の優先使用法
.equals() および .equals() に Eclipse のコード ジェネレーターを利用する場合.hashCode() では、型比較に「instanceof」を使用するオプションが表示される場合があります。 .getClass()。デフォルトの選択は .getClass() ですが、この記事では、instanceof よりも .getClass() を使用することに利点があるかどうかを検証します。
instanceof を使用しない場合の比較:
if (obj == null) return false; if (getClass() != obj.getClass()) return false;
を使用した比較instanceof:
if (obj == null) return false; if (!(obj instanceof MyClass)) return false;
通常、null オブジェクトは必然的に instanceof に失敗するため、instanceof オプションを使用し、「if (obj == null)」チェックを削除することをお勧めします。しかし、このやり方は本質的に間違っているのでしょうか?
instanceof の議論
有名な Java 専門家 Josh Bloch は、次の理由を挙げてこのアプローチを支持しています。
追加リソース
以上がJava の `.equals()` メソッドの `getClass()` と `instanceof` : どちらが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。