0

Eclipse の自動生成された equals メソッドでは、最初の行で参照の等価性が比較されます

if(this == obj) return true;

私が知る限り、 == は実際には等価チェックではなく、2 つの参照が同じメモリ位置を指しているかどうかのみをチェックします。では、なぜ使われるのでしょうか。

4

2 に答える 2

3

参照が 2 つあるとします。

Foo foo = new Foo("some value", " many parameter", 1, 2, 3, 5); 
Foo foo2 = foo;

if (foo2.equals(foo))
    // do something

Fooオブジェクトが等しいためにすべてが等しい必要がある一連のフィールドを持つクラスはどこにありますか。

早い段階で参照の等価性を比較すると、参照されるオブジェクトが等しいことが保証されるため、参照されるオブジェクトの各フィールドをチェックする必要がなくなります。

于 2013-11-13T00:54:49.900 に答える
1

参照の等価性をチェックするのは信じられないほど高速であるため、より積極的な比較に進む前に、それを片付けたほうがよいでしょう。

于 2013-11-13T00:57:04.887 に答える