模块 java.base

类 ObjectMethods

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

public class ObjectMethods extends Object
用于核心方法的状态驱动实现的引导方法,包括 Object.equals(Object) Object.hashCode() Object.toString() 。例如,Java 编译器实现可以使用这些方法来实现记录类的Object 方法的主体。
自从:
16
  • 方法详情

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