On Sat, 27 Jan 2024 07:52:56 GMT, David Alayachew <[email protected]> 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
It can be used for general classes. See an example:
public class Stuff {
public int a, b;
private static final MethodHandle EQUALS;
static {
var lookup = MethodHandles.lookup();
try {
EQUALS = ObjectMethods.bootstrap(lookup, "equals", MethodHandle.class, "",
lookup.findGetter(Stuff.class, "a", int.class),
lookup.findGetter(Stuff.class, "b", int.class));
} catch (ReflectiveOperationException ex) {
throw new ExceptionInInitializerError(ex);
}
}
public boolean equals(Object o) {
return EQUALS.invokeExact(this, o);
}
}
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17603#issuecomment-1913227054