RFR: 8324718: Add a static function to java.util.Objects to simplify object equality checks [v6]
Chen Liang
liach at openjdk.org
Sat Jan 27 17:08:34 UTC 2024
On Sat, 27 Jan 2024 07:52:56 GMT, David Alayachew <duke at openjdk.org> wrote:
>> Adding a function to Objects in order to facilitate equality checking and enhance readability. You simply specify the 2 objects that you want to check for equality, and then provide the functions which will be used to provide the values that we will check for equality.
>
> David Alayachew has updated the pull request incrementally with one additional commit since the last revision:
>
> Rather than reiterating the precondition, let's explain why the method failed
Your API is risky as well: it won't get a compile error if you add a new field but forgot to add that field to equality checks too. And since initialization happens in `<clinit>`, your said error is quite easy to detect if this class is ever loaded.
If you want this example to be "not brittle" you can resort to annotation processors (essentially compiler plugins) that automatically generate invokedynamic (which is better than this explicit field approach, as this field is initialized eagerly while indy is lazy)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17603#issuecomment-1913261457
More information about the core-libs-dev
mailing list