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

Reply via email to