You must have misunderstood. Even so, a snarky answer is uncalled for.

The specification of Object.equals() is violated by the example, but that 
outcome would be *required* by your version of the specification of 
Set.equals().

Do you really think that the specification of Object.equals() is unimportant? 
Lots of code relies on it.



> On May 12, 2020, at 2:37 PM, Stuart Marks <stuart.ma...@oracle.com> wrote:
> 
> 
> 
>>> The containsAll() and equals() methods both use the membership contract of 
>>> the receiver, not the argument. Unfortunately, the equals() specification 
>>> says,
>>> 
>>>    Returns true if the specified object is also a set, the two sets have the
>>>    same size, and every member of the specified set is contained in this set
>>>    (or equivalently, every member of this set is contained in the specified
>>>    set).
>>> 
>>> As should be clear from this discussion, the "equivalently" clause is 
>>> incorrect -- another spec bug.
>> Changing Set.equals() in this way would make Set inconsistent with Object.
>> Do you really think that is a good idea?
> 
>    [example of asymmetry of equals]
> 
> Your example illustrates that the "equivalently" clause is incorrect. I 
> prefer specifications to have fewer incorrect statements.
> 
> s'marks
> 

Reply via email to