- 所有父级接口:
ConstantDesc
- 所有已知的子接口:
DirectMethodHandleDesc
public sealed interface MethodHandleDesc extends ConstantDesc permits DirectMethodHandleDesc (not exhaustive)
名义描述符 代表
MethodHandle
常量。
- 自从:
- 12
-
方法总结
修饰符和类型方法描述default MethodHandleDesc
asType
(MethodTypeDesc type) 返回一个 MethodHandleDesc,它描述了适应不同类型的方法句柄,就像MethodHandle.asType(MethodType)
一样。boolean
比较指定对象与此描述符是否相等。返回一个MethodTypeDesc
描述此标称描述符所描述的方法句柄的调用类型。static DirectMethodHandleDesc
of
(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, String lookupDescriptor) 创建一个 MethodHandleDesc 对应于声明方法的调用、构造函数的调用或对字段的访问。static DirectMethodHandleDesc
ofConstructor
(ClassDesc owner, ClassDesc... paramTypes) 返回对应于构造函数调用的 MethodHandleDescstatic DirectMethodHandleDesc
ofField
(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String fieldName, ClassDesc fieldType) 创建一个 MethodHandleDesc 对应于访问字段的方法句柄。static DirectMethodHandleDesc
ofMethod
(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, MethodTypeDesc lookupMethodType) 创建一个 MethodHandleDesc 对应于声明的方法或构造函数的调用。在接口 java.lang.constant.ConstantDesc 中声明的方法
resolveConstantDesc
-
方法详情
-
of
static DirectMethodHandleDesc of(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, String lookupDescriptor) 创建一个 MethodHandleDesc 对应于声明方法的调用、构造函数的调用或对字段的访问。查找描述符字符串的格式与
CONSTANT_MethodHandle_info
的各种变体和MethodHandles.Lookup
上的查找方法相同。对于方法或构造函数调用,它被解释为方法类型描述符;对于字段访问,它被解释为字段描述符。如果kind
是CONSTRUCTOR
,则忽略name
参数并且查找描述符的返回类型必须是void
。如果kind
对应于虚方法调用,则查找类型包括方法参数但不包括接收者类型。- 参数:
kind
- 要描述的方法句柄的种类owner
- 一个ClassDesc
描述包含方法、构造函数或字段的类name
- 方法或字段的非限定名称(如果kind
是CONSTRUCTOR
则忽略)lookupDescriptor
- 方法描述符字符串查找类型,如果请求是针对方法调用,或描述调用类型,如果请求是针对字段或构造函数- 返回:
- MethodHandleDesc
- 抛出:
NullPointerException
- 如果任何未忽略的参数为空IllegalArgumentException
- 如果描述符字符串不是有效的方法或字段描述符- 看Java 虚拟机规范:
-
4.4.8 CONSTANT_MethodHandle_info结构
4.2.2 非限定名称
4.3.2 字段描述符
4.3.3 方法描述符
-
ofMethod
static DirectMethodHandleDesc ofMethod(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, MethodTypeDesc lookupMethodType) 创建一个 MethodHandleDesc 对应于声明的方法或构造函数的调用。查找描述符字符串的格式与
MethodHandles.Lookup
上的查找方法相同。如果kind
是CONSTRUCTOR
,名称将被忽略并且查找类型的返回类型必须是void
。如果kind
对应于虚方法调用,则查找类型包括方法参数但不包括接收者类型。- 参数:
kind
- 要描述的方法句柄的种类;必须是SPECIAL, VIRTUAL, STATIC, INTERFACE_SPECIAL, INTERFACE_VIRTUAL, INTERFACE_STATIC, CONSTRUCTOR
之一owner
- 一个ClassDesc
描述包含方法或构造函数的类name
- 方法的非限定名称(如果kind
是CONSTRUCTOR
则忽略)lookupMethodType
- 描述查找类型的MethodTypeDesc
- 返回:
- MethodHandleDesc
- 抛出:
NullPointerException
- 如果任何未忽略的参数为空IllegalArgumentException
- 如果name
格式不正确,或者种类无效- 看Java 虚拟机规范:
-
4.2.2 非限定名称
-
ofField
static DirectMethodHandleDesc ofField(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String fieldName, ClassDesc fieldType) 创建一个 MethodHandleDesc 对应于访问字段的方法句柄。- 参数:
kind
- 要描述的方法句柄的种类;必须是GETTER
、SETTER
、STATIC_GETTER
或STATIC_SETTER
之一owner
- 一个ClassDesc
描述包含字段的类fieldName
- 字段的非限定名称fieldType
- 一个ClassDesc
描述字段的类型- 返回:
- MethodHandleDesc
- 抛出:
NullPointerException
- 如果任何参数为空IllegalArgumentException
- 如果kind
不是有效值之一或字段名称无效- 看Java 虚拟机规范:
-
4.2.2 非限定名称
-
ofConstructor
返回对应于构造函数调用的 MethodHandleDesc- 参数:
owner
- 一个ClassDesc
描述包含构造函数的类paramTypes
-ClassDesc
描述了构造函数的参数类型- 返回:
- MethodHandleDesc
- 抛出:
NullPointerException
- 如果任何参数或其内容是null
-
asType
返回一个 MethodHandleDesc,它描述了适应不同类型的方法句柄,就像MethodHandle.asType(MethodType)
一样。- 参数:
type
- 描述新方法类型的MethodHandleDesc
- 返回:
- 一个 MethodHandleDesc 用于适应的方法句柄
- 抛出:
NullPointerException
- 如果参数是null
-
invocationType
MethodTypeDesc invocationType()返回一个MethodTypeDesc
描述此标称描述符所描述的方法句柄的调用类型。调用类型描述了调用所消耗的堆栈值的完整集合(包括接收者,如果有的话)。- 返回:
- MethodHandleDesc 描述方法句柄类型
-
equals
比较指定对象与此描述符是否相等。当且仅当指定对象也是 MethodHandleDesc 时返回true
,并且两者都对方法句柄的相同标称描述进行编码。
-