# ObjectMethods

Added in[API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Methods](https://developer.android.com/reference/java/lang/runtime/ObjectMethods#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/java/lang/runtime/ObjectMethods#inhmethods)  

# ObjectMethods

`
public


class
ObjectMethods
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


`

|---|---------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | java.lang.runtime.ObjectMethods |

<br />

*** ** * ** ***

Bootstrap methods for state-driven implementations of core methods, including[Object.equals(Object)](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)),[Object.hashCode()](https://developer.android.com/reference/java/lang/Object#hashCode()), and[Object.toString()](https://developer.android.com/reference/java/lang/Object#toString()). These methods may be used, for example, by Java compiler implementations to implement the bodies of[Object](https://developer.android.com/reference/java/lang/Object)methods for record classes.

## Summary

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ### Public methods                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ||
|------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` static `[Object](https://developer.android.com/reference/java/lang/Object) | ` `[bootstrap](https://developer.android.com/reference/java/lang/runtime/ObjectMethods#bootstrap(java.lang.invoke.MethodHandles.Lookup,%20java.lang.String,%20java.lang.invoke.TypeDescriptor,%20java.lang.Class<?>,%20java.lang.String,%20java.lang.invoke.MethodHandle[]))`(`[MethodHandles.Lookup](https://developer.android.com/reference/java/lang/invoke/MethodHandles.Lookup)` lookup, `[String](https://developer.android.com/reference/java/lang/String)` methodName, `[TypeDescriptor](https://developer.android.com/reference/java/lang/invoke/TypeDescriptor)` type, `[Class](https://developer.android.com/reference/java/lang/Class)`<?> recordClass, `[String](https://developer.android.com/reference/java/lang/String)` names, `[MethodHandle...](https://developer.android.com/reference/java/lang/invoke/MethodHandle)` getters) ` Bootstrap method to generate the[Object.equals(Object)](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)),[Object.hashCode()](https://developer.android.com/reference/java/lang/Object#hashCode()), and[Object.toString()](https://developer.android.com/reference/java/lang/Object#toString())methods, based on a description of the component names and accessor methods, for either`invokedynamic`call sites or dynamic constant pool entries. |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(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. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(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](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||

## Public methods

### bootstrap

Added in[API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static Object bootstrap (MethodHandles.Lookup lookup, 
                String methodName, 
                TypeDescriptor type, 
                Class<?> recordClass, 
                String names, 
                MethodHandle... getters)
```

Bootstrap method to generate the[Object.equals(Object)](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)),[Object.hashCode()](https://developer.android.com/reference/java/lang/Object#hashCode()), and[Object.toString()](https://developer.android.com/reference/java/lang/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)](https://developer.android.com/reference/java/lang/Record#equals(java.lang.Object)),[Record.hashCode()](https://developer.android.com/reference/java/lang/Record#hashCode())and[Record.toString()](https://developer.android.com/reference/java/lang/Record#toString()).

<br />

|                                                                                                                                                                                                          Parameters                                                                                                                                                                                                          ||
|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `lookup`      | `MethodHandles.Lookup`: Every bootstrap method is expected to have a`lookup`which usually represents a lookup context with the accessibility privileges of the caller. This is because`invokedynamic`call sites always provide a`lookup`to the corresponding bootstrap method, but this method just ignores the`lookup`parameter <br />                                                                       |
| `methodName`  | `String`: the name of the method to generate, which must be one of`"equals"`,`"hashCode"`, or`"toString"` <br />                                                                                                                                                                                                                                                                                              |
| `type`        | `TypeDescriptor`: a[MethodType](https://developer.android.com/reference/java/lang/invoke/MethodType)corresponding the descriptor type for the method, which must correspond to the descriptor for the corresponding[Object](https://developer.android.com/reference/java/lang/Object)method, if linking an`invokedynamic`call site, or the constant`MethodHandle.class`, if linking a dynamic constant <br /> |
| `recordClass` | `Class`: the record class hosting the record components <br />                                                                                                                                                                                                                                                                                                                                                |
| `names`       | `String`: the list of component names, joined into a string separated by ";", or the empty string if there are no components. Maybe be null, if the`methodName`is`"equals"`or`"hashCode"`. <br />                                                                                                                                                                                                             |
| `getters`     | `MethodHandle`: method handles for the accessor methods for the components <br />                                                                                                                                                                                                                                                                                                                             |

|                                                                       Returns                                                                       ||
|--------------------------------------------------------------------|---------------------------------------------------------------------------------|
| [Object](https://developer.android.com/reference/java/lang/Object) | a call site if invoked by indy, or a method handle if invoked by a condy <br /> |

|                                                                              Throws                                                                              ||
|--------------------------------------------------------------------------------------------------------|----------------------------------------------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if the bootstrap arguments are invalid or inconsistent   |
| [Throwable](https://developer.android.com/reference/java/lang/Throwable)                               | if any exception is thrown during call site construction |