Module java.base

Class ObjectMethods

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

public class ObjectMethods extends Object
状态驱动实现核心方法的Bootstrap方法,包括Object.equals(Object)Object.hashCode()Object.toString()。例如,Java编译器实现可以使用这些方法来为记录类实现Object方法的主体。
自 JDK 版本:
16
  • Method Details

    • bootstrap

      public static Object bootstrap(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters) throws Throwable
      生成Object.equals(Object)Object.hashCode()Object.toString()方法的Bootstrap方法,基于组件名称和访问器方法的描述,用于invokedynamic调用站点或动态常量池条目。有关生成方法语义的更多详细信息,请参阅Record.equals(Object)Record.hashCode()Record.toString()的规范。
      参数:
      lookup - 每个Bootstrap方法都应该有一个lookup,通常表示调用者的可访问性权限的查找上下文。这是因为invokedynamic调用站点总是为相应的Bootstrap方法提供一个lookup,但此方法只是忽略lookup参数。
      methodName - 要生成的方法的名称,必须是"equals""hashCode""toString"之一
      type - 与方法的描述符类型对应的MethodType,必须与相应的Object方法的描述符对应,如果链接一个invokedynamic调用站点,或常量MethodHandle.class,如果链接一个动态常量
      recordClass - 托管记录组件的记录类
      names - 组件名称列表,用";"分隔后连接成字符串,如果没有组件,则为空字符串。如果methodName参数为"equals""hashCode",则忽略此参数。
      getters - 组件访问器方法的方法句柄
      返回:
      如果由indy调用,则返回调用站点,如果由condy调用,则返回方法句柄
      异常:
      IllegalArgumentException - 如果Bootstrap参数无效或不一致
      NullPointerException - 如果任何参数为nullgetters数组中的任何元素为null
      Throwable - 如果在调用站点构造期间抛出任何异常