Module java.base

Class DynamicCallSiteDesc

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

public class DynamicCallSiteDesc extends Object
一个用于invokedynamic调用站点的名义描述符。

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

自:
12
  • Method Details

    • of

      public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs)
      invokedynamic调用站点创建一个名义描述符。
      参数:
      bootstrapMethod - 描述invokedynamic的引导方法的DirectMethodHandleDesc
      invocationName - 将出现在invokedynamicNameAndType操作数中的未限定名称
      invocationType - 描述将出现在invokedynamicNameAndType操作数中的调用类型的MethodTypeDesc
      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操作数中的调用类型
      返回:
      名义描述符
      抛出:
      NullPointerException - 如果任何参数为null
      IllegalArgumentException - 如果调用名称格式不正确
    • of

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

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

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

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

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

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

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

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

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

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

      hashCode的一般约定是:

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

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