- 所有父级接口:
ConstantDesc
- 所有已知的子接口:
DirectMethodHandleDesc
public sealed interface MethodHandleDesc extends ConstantDesc permits DirectMethodHandleDesc (not exhaustive)
名义描述符 代表
MethodHandle 常量。
- 自从:
- 12
-
方法总结
修饰符和类型方法描述default MethodHandleDescasType(MethodTypeDesc type) 返回一个 MethodHandleDesc,它描述了适应不同类型的方法句柄,就像MethodHandle.asType(MethodType)一样。boolean比较指定对象与此描述符是否相等。返回一个MethodTypeDesc描述此标称描述符所描述的方法句柄的调用类型。static DirectMethodHandleDescof(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, String lookupDescriptor) 创建一个 MethodHandleDesc 对应于声明方法的调用、构造函数的调用或对字段的访问。static DirectMethodHandleDescofConstructor(ClassDesc owner, ClassDesc... paramTypes) 返回对应于构造函数调用的 MethodHandleDescstatic DirectMethodHandleDescofField(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String fieldName, ClassDesc fieldType) 创建一个 MethodHandleDesc 对应于访问字段的方法句柄。static DirectMethodHandleDescofMethod(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,并且两者都对方法句柄的相同标称描述进行编码。
-