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