-
- All Superinterfaces:
ConstantDesc
- All Known Subinterfaces:
DirectMethodHandleDesc
public interface MethodHandleDesc extends ConstantDesc
A nominal descriptor for aMethodHandle
constant.- API Note:
- In the future, if the Java language permits, MethodHandleDesc
may become a
sealed
interface, which would prohibit subclassing except by explicitly permitted types. Non-platform classes should not implement MethodHandleDesc directly. - Since:
- 12
-
-
Method Summary
Modifier and Type Method Description default MethodHandleDesc
asType(MethodTypeDesc type)
Returns a MethodHandleDesc that describes this method handle adapted to a different type, as if byMethodHandle.asType(MethodType)
.boolean
equals(Object o)
Compares the specified object with this descriptor for equality.MethodTypeDesc
invocationType()
Returns aMethodTypeDesc
describing the invocation type of the method handle described by this nominal descriptor.static DirectMethodHandleDesc
of(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, String lookupDescriptor)
Creates a MethodHandleDesc corresponding to an invocation of a declared method, invocation of a constructor, or access to a field.static DirectMethodHandleDesc
ofConstructor(ClassDesc owner, ClassDesc... paramTypes)
Returns a MethodHandleDesc corresponding to invocation of a constructorstatic DirectMethodHandleDesc
ofField(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String fieldName, ClassDesc fieldType)
Creates a MethodHandleDesc corresponding to a method handle that accesses a field.static DirectMethodHandleDesc
ofMethod(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, MethodTypeDesc lookupMethodType)
Creates a MethodHandleDesc corresponding to an invocation of a declared method or constructor.-
Methods declared in interface java.lang.constant.ConstantDesc
resolveConstantDesc
-
-
-
-
Method Detail
-
of
static DirectMethodHandleDesc of(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, String lookupDescriptor)
Creates a MethodHandleDesc corresponding to an invocation of a declared method, invocation of a constructor, or access to a field.The lookup descriptor string has the same format as for the various variants of
CONSTANT_MethodHandle_info
and for the lookup methods onMethodHandles.Lookup
. For a method or constructor invocation, it is interpreted as a method type descriptor; for field access, it is interpreted as a field descriptor. Ifkind
isCONSTRUCTOR
, thename
parameter is ignored and the return type of the lookup descriptor must bevoid
. Ifkind
corresponds to a virtual method invocation, the lookup type includes the method parameters but not the receiver type.- Parameters:
kind
- The kind of method handle to be describedowner
- aClassDesc
describing the class containing the method, constructor, or fieldname
- the unqualified name of the method or field (ignored ifkind
isCONSTRUCTOR
)lookupDescriptor
- a method descriptor string the lookup type, if the request is for a method invocation, or describing the invocation type, if the request is for a field or constructor- Returns:
- the MethodHandleDesc
- Throws:
NullPointerException
- if any of the non-ignored arguments are null- See The Java™ Virtual Machine Specification:
- 4.4.8 The CONSTANT_MethodHandle_info Structure, 4.2.2 Unqualified Names, 4.3.2 Field Descriptors, 4.3.3 Method Descriptors
-
ofMethod
static DirectMethodHandleDesc ofMethod(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, MethodTypeDesc lookupMethodType)
Creates a MethodHandleDesc corresponding to an invocation of a declared method or constructor.The lookup descriptor string has the same format as for the lookup methods on
MethodHandles.Lookup
. Ifkind
isCONSTRUCTOR
, the name is ignored and the return type of the lookup type must bevoid
. Ifkind
corresponds to a virtual method invocation, the lookup type includes the method parameters but not the receiver type.- Parameters:
kind
- The kind of method handle to be described; must be one ofSPECIAL, VIRTUAL, STATIC, INTERFACE_SPECIAL, INTERFACE_VIRTUAL, INTERFACE_STATIC, CONSTRUCTOR
owner
- aClassDesc
describing the class containing the method or constructorname
- the unqualified name of the method (ignored ifkind
isCONSTRUCTOR
)lookupMethodType
- aMethodTypeDesc
describing the lookup type- Returns:
- the MethodHandleDesc
- Throws:
NullPointerException
- if any non-ignored arguments are nullIllegalArgumentException
- if thename
has the incorrect format, or the kind is invalid- See The Java™ Virtual Machine Specification:
- 4.2.2 Unqualified Names
-
ofField
static DirectMethodHandleDesc ofField(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String fieldName, ClassDesc fieldType)
Creates a MethodHandleDesc corresponding to a method handle that accesses a field.- Parameters:
kind
- the kind of the method handle to be described; must be one ofGETTER
,SETTER
,STATIC_GETTER
, orSTATIC_SETTER
owner
- aClassDesc
describing the class containing the fieldfieldName
- the unqualified name of the fieldfieldType
- aClassDesc
describing the type of the field- Returns:
- the MethodHandleDesc
- Throws:
NullPointerException
- if any of the arguments are nullIllegalArgumentException
- if thekind
is not one of the valid values or if the field name is not valid- See The Java™ Virtual Machine Specification:
- 4.2.2 Unqualified Names
-
ofConstructor
static DirectMethodHandleDesc ofConstructor(ClassDesc owner, ClassDesc... paramTypes)
Returns a MethodHandleDesc corresponding to invocation of a constructor- Parameters:
owner
- aClassDesc
describing the class containing the constructorparamTypes
-ClassDesc
s describing the parameter types of the constructor- Returns:
- the MethodHandleDesc
- Throws:
NullPointerException
- if any of the arguments are null
-
asType
default MethodHandleDesc asType(MethodTypeDesc type)
Returns a MethodHandleDesc that describes this method handle adapted to a different type, as if byMethodHandle.asType(MethodType)
.- Parameters:
type
- aMethodHandleDesc
describing the new method type- Returns:
- a MethodHandleDesc for the adapted method handle
-
invocationType
MethodTypeDesc invocationType()
Returns aMethodTypeDesc
describing the invocation type of the method handle described by this nominal descriptor. The invocation type describes the full set of stack values that are consumed by the invocation (including the receiver, if any).- Returns:
- a MethodHandleDesc describing the method handle type
-
equals
boolean equals(Object o)
Compares the specified object with this descriptor for equality. Returnstrue
if and only if the specified object is also a MethodHandleDesc, and both encode the same nominal description of a method handle.- Overrides:
equals
in classObject
- Parameters:
o
- the other object- Returns:
- whether this descriptor is equal to the other object
- See Also:
Object.hashCode()
,HashMap
-
-