# Class ObjectMethods

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

public final class ObjectMethods extends Object
Bootstrap methods for state-driven implementations of core methods, including `Object.equals(Object)`, `Object.hashCode()`, and `Object.toString()`. These methods may be used, for example, by Java compiler implementations to implement the bodies of `Object` methods for record classes.

Since:
  16

## Method Summary

Modifier and Type
Method
Description
`static Object`
`bootstrap(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters)`
Bootstrap method to generate the `Object.equals(Object)`, `Object.hashCode()`, and `Object.toString()` methods, based on a description of the component names and accessor methods, for either `invokedynamic` call sites or dynamic constant pool entries.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Method Details

### bootstrap

public static Object bootstrap(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters) throws Throwable
Bootstrap method to generate the `Object.equals(Object)`, `Object.hashCode()`, and `Object.toString()` methods, based on a description of the component names and accessor methods, for either `invokedynamic` call sites or dynamic constant pool entries. For more detail on the semantics of the generated methods see the specification of `Record.equals(Object)`, `Record.hashCode()` and `Record.toString()`.

Parameters:
  `lookup` - the full-privilege lookup context of the caller
  `methodName` - the name of the method to generate, which must be one of `"equals"`, `"hashCode"`, or `"toString"`
  `type` - a `MethodType` corresponding the descriptor type for the method, which must correspond to the descriptor for the corresponding `Object` method, if linking an `invokedynamic` call site, or the constant `MethodHandle.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 the `methodName` 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
  `Throwable` - if any exception is thrown during call site construction