java.lang.Object
java.lang.runtime.ObjectMethods
public class ObjectMethods extends Object
This class is associated with records, a preview
feature of the Java language. Preview features
may be removed in a future release, or upgraded to permanent
features of the Java language.
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:
- 14
-
Method Summary
Modifier and Type Method Description static Objectbootstrap(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters)Bootstrap method to generate theObject.equals(Object),Object.hashCode(), andObject.toString()methods, based on a description of the component names and accessor methods, for eitherinvokedynamiccall sites or dynamic constant pool entries.
-
Method Details
-
bootstrap
public static Object bootstrap(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters) throws ThrowableBootstrap method to generate theObject.equals(Object),Object.hashCode(), andObject.toString()methods, based on a description of the component names and accessor methods, for eitherinvokedynamiccall sites or dynamic constant pool entries. For more detail on the semantics of the generated methods see the specification ofRecord.equals(Object),Record.hashCode()andRecord.toString().- Parameters:
lookup- Every bootstrap method is expected to have alookupwhich usually represents a lookup context with the accessibility privileges of the caller. This is becauseinvokedynamiccall sites always provide alookupto the corresponding bootstrap method, but this method just ignores thelookupparametermethodName- the name of the method to generate, which must be one of"equals","hashCode", or"toString"type- aMethodTypecorresponding the descriptor type for the method, which must correspond to the descriptor for the correspondingObjectmethod, if linking aninvokedynamiccall site, or the constantMethodHandle.class, if linking a dynamic constantrecordClass- the record class hosting the record componentsnames- the list of component names, joined into a string separated by ";", or the empty string if there are no components. Maybe be null, if themethodNameis"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 inconsistentThrowable- if any exception is thrown during call site construction
-