<div dir="ltr">I'm not sure that this is the right place to raise this, but don't know where else to do so.<div><br></div><div>For identity types, == is simply a test of reference equality and so is a useful first test in an overriding type-specific equals method. </div><div><br></div><div>For value types, the relationship is more subtle, since == is a test of value equality, not reference equality. I suggest it be implemented as an operator causing Object::equals to be invoked, so that if Object::equals is overloaded (e.g. to first test equality of hash codes or otherwise modify the default equals test), the overloaded method is automatically invoked when == is used.</div><div><br></div><div>This would mean that Object::equals implements the == operator, rather than the reverse, so that a specification that a == b always means a.equals(b), whether implemented by the default test or by an overriding type-specific method (that e.g. tests for equality of identity object field values). I believe this would make value types (especially value trees) easier to use.</div><div><br></div><div>John<br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Phone:  (416) 450-3584 (cell)</div></div></div></div>