On Sat, 27 Jan 2024 07:52:56 GMT, David Alayachew <d...@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 > It can be used for general classes. See an example: > > ```java > 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); > } > } > ``` @liach, Ok, I concede that point. Regardless, my original intention was to have something that could be used ad-hoc, along the lines of `Comparator`. In your example, it would be quite difficult to provide the necessary parameters ad hoc. ------------- PR Comment: https://git.openjdk.org/jdk/pull/17603#issuecomment-1913252584