模块 java.base

类 DynamicCallSiteDesc

java.lang.Object
java.lang.constant.DynamicCallSiteDesc

public class DynamicCallSiteDesc extends Object
名义描述符 用于 invokedynamic 呼叫站点。

DynamicCallSiteDesc 的具体子类型应该是不可变的,它们的行为不应该依赖于对象身份。

自从:
12
  • 方法详情

    • of

      public static DynamicCallSiteDesc  of(DirectMethodHandleDesc  bootstrapMethod, String  invocationName, MethodTypeDesc  invocationType, ConstantDesc ... bootstrapArgs)
      invokedynamic 呼叫站点创建标称描述符。
      参数:
      bootstrapMethod - 一个 DirectMethodHandleDesc 描述了 invokedynamic 的引导方法
      invocationName - 将出现在 invokedynamicNameAndType 操作数中的非限定名称
      invocationType - 一个 MethodTypeDesc 描述将出现在 invokedynamicNameAndType 操作数中的调用类型
      bootstrapArgs - ConstantDesc 描述引导程序的静态参数,将出现在 BootstrapMethods 属性中
      返回:
      名义描述符
      抛出:
      NullPointerException - 如果任何参数或其内容是 null
      IllegalArgumentException - 如果调用名称的格式不正确
      Java 虚拟机规范:
      4.2.2 非限定名称
    • of

      public static DynamicCallSiteDesc  of(DirectMethodHandleDesc  bootstrapMethod, String  invocationName, MethodTypeDesc  invocationType)
      为引导方法没有静态参数的 invokedynamic 调用站点创建标称描述符。
      参数:
      bootstrapMethod - invokedynamic 的引导方法
      invocationName - 将出现在 invokedynamicNameAndType 操作数中的调用名称
      invocationType - 将出现在 invokedynamicNameAndType 操作数中的调用 invocationType
      返回:
      名义描述符
      抛出:
      NullPointerException - 如果任何参数为空
      IllegalArgumentException - 如果调用名称的格式不正确
    • of

      public static DynamicCallSiteDesc  of(DirectMethodHandleDesc  bootstrapMethod, MethodTypeDesc  invocationType)
      invokedynamic 调用站点创建标称描述符,其引导方法没有静态参数且名称参数为 ConstantDescs.DEFAULT_NAME
      参数:
      bootstrapMethod - 一个 DirectMethodHandleDesc 描述了 invokedynamic 的引导方法
      invocationType - 一个 MethodTypeDesc 描述将出现在 invokedynamicNameAndType 操作数中的调用类型
      返回:
      名义描述符
      抛出:
      NullPointerException - 如果任何参数为空
    • withArgs

      public DynamicCallSiteDesc  withArgs(ConstantDesc ... bootstrapArgs)
      返回 invokedynamic 调用站点的标称描述符,其引导方法、名称和调用类型与此相同,但具有指定的引导参数。
      参数:
      bootstrapArgs - ConstantDesc 描述引导程序的静态参数,将出现在 BootstrapMethods 属性中
      返回:
      名义描述符
      抛出:
      NullPointerException - 如果参数或其内容是 null
    • withNameAndType

      public DynamicCallSiteDesc  withNameAndType(String  invocationName, MethodTypeDesc  invocationType)
      返回 invokedynamic 调用站点的标称描述符,其 bootstrap 和 bootstrap 参数与此相同,但具有指定的 invocationName 和 invocation invocationType
      参数:
      invocationName - 将出现在 invokedynamicNameAndType 操作数中的非限定名称
      invocationType - 一个 MethodTypeDesc 描述将出现在 invokedynamicNameAndType 操作数中的调用类型
      返回:
      名义描述符
      抛出:
      NullPointerException - 如果任何参数为空
      IllegalArgumentException - 如果调用名称的格式不正确
      Java 虚拟机规范:
      4.2.2 非限定名称
    • invocationName

      public String  invocationName()
      返回将出现在 invokedynamicNameAndType 操作数中的调用名称。
      返回:
      调用名称
    • invocationType

      public MethodTypeDesc  invocationType()
      返回一个 MethodTypeDesc 描述将出现在 invokedynamicNameAndType 操作数中的调用类型。
      返回:
      调用类型
    • bootstrapMethod

      public MethodHandleDesc  bootstrapMethod()
      返回一个 MethodHandleDesc 描述 invokedynamic 的引导方法。
      返回:
      invokedynamic 的引导方法
    • bootstrapArgs

      public ConstantDesc [] bootstrapArgs()
      返回 ConstantDesc s,描述 invokedynamic 的引导程序参数。返回的数组总是非空的。如果此 DynamicCallSiteDesc 没有引导程序参数,则返回零长度数组。
      返回:
      invokedynamic 的引导程序参数
    • resolveCallSiteDesc

      public CallSite  resolveCallSiteDesc(MethodHandles.Lookup  lookup) throws Throwable
      以指定参数反射调用 bootstrap 方法,并返回结果 CallSite
      参数:
      lookup - MethodHandles.Lookup 用于解析类名
      返回:
      CallSite
      抛出:
      Throwable - 如果引导方法抛出任何异常
    • equals

      public final boolean equals(Object  o)
      比较指定对象与此描述符是否相等。当且仅当指定对象也是 DynamicCallSiteDesc 并且两个描述符具有相同的引导方法、引导参数列表、调用名称和调用类型时返回 true
      重写:
      equals 在类 Object
      参数:
      o - 与这个 DynamicCallSiteDesc 比较的 DynamicCallSiteDesc
      返回:
      true 如果指定的 DynamicCallSiteDesc 等于此 DynamicCallSiteDesc
      参见:
    • hashCode

      public final int hashCode()
      从类复制的描述:Object
      返回对象的哈希码值。支持此方法是为了哈希表的好处,例如 HashMap 提供的哈希表。

      hashCode的总合同为:

      • 每当在 Java 应用程序的执行期间对同一个对象多次调用时,hashCode 方法必须始终返回相同的整数,前提是在对象的equals 比较中使用的信息没有被修改。从一个应用程序的一次执行到同一应用程序的另一次执行,该整数不需要保持一致。
      • 如果根据 equals 方法两个对象相等,则对这两个对象中的每一个调用 hashCode 方法必须产生相同的整数结果。
      • not 要求如果根据 equals 方法两个对象不相等,则对这两个对象中的每一个调用 hashCode 方法必须产生不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能。
      重写:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • toString

      public String  toString()
      返回此调用站点描述的紧凑文本描述,包括引导方法、调用名称和类型以及静态引导参数。
      重写:
      toString 在类 Object
      返回:
      此调用站点描述符的紧凑文本描述