Class ObjectMethods

java.lang.Object
java.lang.runtime.ObjectMethods

public final classObjectMethodsextendsObject
Bootstrap methods for state-driven implementations of core methods,includingObject.equals(Object),Object.hashCode(), andObject.toString(). These methods may be used, for example, byJava compiler implementations to implement the bodies ofObjectmethods for record classes.
Since:
16
  • Method Details

    • bootstrap

      public static Object bootstrap(MethodHandles.Lookup lookup,String methodName,TypeDescriptor type,Class<?> recordClass,String names,MethodHandle... getters) throwsThrowable
      Bootstrap method to generate theObject.equals(Object),Object.hashCode(), andObject.toString() methods, basedon a description of the component names and accessor methods, for eitherinvokedynamic call sites or dynamic constant pool entries.For more detail on the semantics of the generated methods see the specificationofRecord.equals(Object),Record.hashCode() andRecord.toString().
      Parameters:
      lookup - Every bootstrap method is expected to have alookup which usually represents a lookup context with the accessibility privileges of the caller. This is becauseinvokedynamic call sites always provide alookup to the corresponding bootstrap method, but this method just ignores thelookup parameter
      methodName - the name of the method to generate, which must be one of"equals","hashCode", or"toString"
      type - aMethodType corresponding the descriptor type for the method, which must correspond to the descriptor for the correspondingObject method, if linking aninvokedynamic call site, or the constantMethodHandle.class, if linking a dynamic constant
      recordClass - the record class hosting the record components
      names - the list of component names, joined into a string separated by ";", or the empty string if there are no components. This parameter is ignored if themethodName parameter is"equals" or"hashCode"
      getters - method handles for the accessor methods for the components
      Returns:
      a call site if invoked by indy, or a method handle if invoked by a condy
      Throws:
      IllegalArgumentException - if the bootstrap arguments are invalid or inconsistent
      NullPointerException - if any argument isnull or if any element in thegetters array isnull
      Throwable - if any exception is thrown during call site construction