RFR: 8290973: In AffineTransform, equals(Object) is inconsistent with hashCode()
Philip Race
philip.race at oracle.com
Mon Jul 25 17:44:24 UTC 2022
Hardly a "reminder". The PR is just 10 minutes old. Anything before the
rfr label was added does not count.
-phil.
On 7/25/22 10:38 AM, Martin Desruisseaux wrote:
> On Fri, 10 Jun 2022 09:39:48 GMT, Martin Desruisseaux <duke at openjdk.org> wrote:
>
>> `AffineTransform.equals(Object)` and `hashCode()` break two contracts:
>>
>> * `A.equals(A)` returns `false` if at least one affine transform coefficient is NaN.
>> * `A.equals(B)` should imply `A.hashCode() == B.hashCode()`, but it is not the case if a coefficient is zero with an opposite sign in A and B.
>>
>> This patch preserves the current behaviour regarding 0 (i.e. -0 is considered equal to +0) for backward compatibility reason. Instead the `hashCode()` method is updated for being consistent with `equals(Object)` behaviour.
> Hello, this is a reminder for a pull request: in the `AffineTransform` class, `hashCode()` is inconsistent with `equals(Object)`. The problem occurs with NaN and ±0 coefficients. In particular, the problem with zero values prevents the use of `AffineTransorm` as keys in `HashMap`, unless all zero values are forced to the same sign by `AffineTransform` construction or by pre-processing before using an `AffineTransform` instance as a key.
>
> -------------
>
> PR: https://git.openjdk.org/jdk/pull/9121
More information about the client-libs-dev
mailing list