java.lang.Object
java.lang.constant.DynamicCallSiteDesc
一个用于
invokedynamic
调用站点的名义描述符。
DynamicCallSiteDesc的具体子类型应该是不可变的,并且它们的行为不应依赖于对象标识。
- 自:
- 12
-
Method Summary
Modifier and TypeMethodDescription返回描述invokedynamic
的引导参数的ConstantDesc
。返回描述invokedynamic
的引导方法的MethodHandleDesc
。final boolean
将指定的对象与此描述符进行比较以确定它们是否相等。final int
hashCode()
返回对象的哈希码值。返回将出现在invokedynamic
的NameAndType
操作数中的调用名称。static DynamicCallSiteDesc
of
(DirectMethodHandleDesc bootstrapMethod, MethodTypeDesc invocationType) 为具有没有静态参数的引导方法且名称参数为ConstantDescs.DEFAULT_NAME
的invokedynamic
调用站点创建一个名义描述符。static DynamicCallSiteDesc
of
(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType) 为具有没有静态参数的引导方法的invokedynamic
调用站点创建一个名义描述符。static DynamicCallSiteDesc
of
(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs) 为invokedynamic
调用站点创建一个名义描述符。通过反射调用具有指定参数的引导方法,并返回结果的CallSite
。toString()
返回此调用站点描述的紧凑文本描述,包括引导方法、调用名称和类型以及静态引导参数。withArgs
(ConstantDesc... bootstrapArgs) 返回一个invokedynamic
调用站点的名义描述符,其中引导方法、名称和调用类型与此相同,但具有指定的引导参数。withNameAndType
(String invocationName, MethodTypeDesc invocationType) 返回一个invokedynamic
调用站点的名义描述符,其中引导和引导参数与此相同,但具有指定的调用名称和调用类型。
-
Method Details
-
of
public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs) 为invokedynamic
调用站点创建一个名义描述符。- 参数:
-
bootstrapMethod
- 描述invokedynamic
的引导方法的DirectMethodHandleDesc
-
invocationName
- 将出现在invokedynamic
的NameAndType
操作数中的未限定名称 -
invocationType
- 描述将出现在invokedynamic
的NameAndType
操作数中的调用类型的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
- 将出现在invokedynamic
的NameAndType
操作数中的调用名称 -
invocationType
- 将出现在invokedynamic
的NameAndType
操作数中的调用类型 - 返回:
- 名义描述符
- 抛出:
-
NullPointerException
- 如果任何参数为null
-
IllegalArgumentException
- 如果调用名称格式不正确
-
of
public static DynamicCallSiteDesc of(DirectMethodHandleDesc bootstrapMethod, MethodTypeDesc invocationType) 为具有没有静态参数且名称参数为ConstantDescs.DEFAULT_NAME
的引导方法的invokedynamic
调用站点创建一个名义描述符。- 参数:
-
bootstrapMethod
- 描述invokedynamic
的引导方法的DirectMethodHandleDesc
-
invocationType
- 描述将出现在invokedynamic
的NameAndType
操作数中的调用类型的MethodTypeDesc
- 返回:
- 名义描述符
- 抛出:
-
NullPointerException
- 如果任何参数为null
-
withArgs
返回一个invokedynamic
调用站点的名义描述符,其中引导方法、名称和调用类型与此相同,但具有指定的引导参数。- 参数:
-
bootstrapArgs
- 描述静态引导参数的ConstantDesc
,将出现在BootstrapMethods
属性中 - 返回:
- 名义描述符
- 抛出:
-
NullPointerException
- 如果参数或其内容为null
-
withNameAndType
返回一个invokedynamic
调用站点的名义描述符,其中引导和引导参数与此相同,但具有指定的调用名称和调用类型。- 参数:
-
invocationName
- 将出现在invokedynamic
的NameAndType
操作数中的未限定名称 -
invocationType
- 描述将出现在invokedynamic
的NameAndType
操作数中的调用类型的MethodTypeDesc
- 返回:
- 名义描述符
- 抛出:
-
NullPointerException
- 如果任何参数为null
-
IllegalArgumentException
- 如果调用名称格式不正确 - 参见 Java虚拟机规范:
-
4.2.2 未限定名称
-
invocationName
返回将出现在invokedynamic
的NameAndType
操作数中的调用名称。- 返回:
- 调用名称
-
invocationType
- 返回:
- 调用类型
-
bootstrapMethod
返回描述invokedynamic
的引导方法的MethodHandleDesc
。- 返回:
-
invokedynamic
的引导方法
-
bootstrapArgs
- 返回:
-
invokedynamic
的引导参数
-
resolveCallSiteDesc
通过反射调用具有指定参数的引导方法,并返回结果的CallSite
。- 参数:
-
lookup
- 用于解析类名的MethodHandles.Lookup
- 返回:
-
CallSite
- 抛出:
-
Throwable
- 如果引导方法抛出任何异常
-
equals
将指定的对象与此描述符进行比较以确定它们是否相等。仅当指定的对象也是DynamicCallSiteDesc,并且两个描述符具有相同的引导方法、引导参数列表、调用名称和调用类型时才返回true
。 -
hashCode
public final int hashCode()从类中复制的描述:Object
返回对象的哈希码值。此方法支持哈希表(如HashMap
提供的哈希表)的好处。hashCode
的一般约定是:- 在Java应用程序的执行过程中,如果在同一对象上多次调用
hashCode
方法,则只要在对象上用于equals
比较的信息未被修改,hashCode
方法必须始终一致地返回相同的整数。这个整数不需要在一个应用程序的执行到另一个应用程序的执行之间保持一致。 - 如果两个对象根据
equals
方法是相等的,则在这两个对象的每个对象上调用hashCode
方法必须产生相同的整数结果。 - 不要求如果两个对象根据
equals
方法是不相等的,则在这两个对象的每个对象上调用hashCode
方法必须产生不同的整数结果。但是,程序员应该意识到,为不相等的对象产生不同的整数结果可能会提高哈希表的性能。
- 在Java应用程序的执行过程中,如果在同一对象上多次调用
-
toString
返回此调用站点描述的紧凑文本描述,包括引导方法、调用名称和类型以及静态引导参数。
-