Class ObjectMethods
java.lang.Object
java.lang.runtime.ObjectMethods
Bootstrap methods for state-driven implementations of core methods,including
Object.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 Summary
Modifier and TypeMethodDescriptionstaticObjectbootstrap(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, basedon 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) throwsThrowable Bootstrap method to generate theObject.equals(Object),Object.hashCode(), andObject.toString()methods, basedon 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 specificationofRecord.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. This parameter is ignored if themethodNameparameter 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 inconsistentNullPointerException- if any argument isnullor if any element in thegettersarray isnullThrowable- if any exception is thrown during call site construction