Package net.bytebuddy.utility
Class JavaConstant.MethodHandle
- java.lang.Object
-
- net.bytebuddy.utility.JavaConstant.MethodHandle
-
- All Implemented Interfaces:
JavaConstant
- Enclosing interface:
- JavaConstant
public static class JavaConstant.MethodHandle extends java.lang.Object implements JavaConstant
Represents ajava.lang.invoke.MethodHandle
object. Note that constantMethodHandle
s cannot be represented within the constant pool of a Java class and can therefore not be represented as an instance of this representation order.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
JavaConstant.MethodHandle.HandleType
A representation of a method handle's type.protected static interface
JavaConstant.MethodHandle.MethodHandleInfo
A dispatcher to interact withjava.lang.invoke.MethodHandleInfo
.protected static interface
JavaConstant.MethodHandle.MethodHandles
A dispatcher to interact withjava.lang.invoke.MethodHandles
.protected static interface
JavaConstant.MethodHandle.MethodType
A dispatcher to interact withjava.lang.invoke.MethodType
.-
Nested classes/interfaces inherited from interface net.bytebuddy.utility.JavaConstant
JavaConstant.Dynamic, JavaConstant.MethodHandle, JavaConstant.Simple<T>, JavaConstant.Visitor<T>
-
-
Field Summary
Fields Modifier and Type Field Description private JavaConstant.MethodHandle.HandleType
handleType
The handle type that is represented by this instance.protected static JavaConstant.MethodHandle.MethodHandleInfo
METHOD_HANDLE_INFO
A dispatcher to interact withjava.lang.invoke.MethodHandleInfo
.protected static JavaConstant.MethodHandle.MethodHandles
METHOD_HANDLES
A dispatcher to interact withjava.lang.invoke.MethodHandles
.protected static JavaConstant.MethodHandle.MethodHandles.Lookup
METHOD_HANDLES_LOOKUP
A dispatcher to interact withjava.lang.invoke.MethodHandles$Lookup
.protected static JavaConstant.MethodHandle.MethodType
METHOD_TYPE
A dispatcher to interact withjava.lang.invoke.MethodType
.private java.lang.String
name
The name that is represented by this instance.private TypeDescription
ownerType
The owner type that is represented by this instance.private java.util.List<? extends TypeDescription>
parameterTypes
The parameter types that is represented by this instance.private TypeDescription
returnType
The return type that is represented by this instance.
-
Constructor Summary
Constructors Modifier Constructor Description protected
MethodHandle(JavaConstant.MethodHandle.HandleType handleType, TypeDescription ownerType, java.lang.String name, TypeDescription returnType, java.util.List<? extends TypeDescription> parameterTypes)
Creates a method handle representation.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> T
accept(JavaConstant.Visitor<T> visitor)
Applies the supplied visitor to this constant type with its respective callback.private static <T> T
doPrivileged(java.security.PrivilegedAction<T> action)
A proxy forjava.security.AccessController#doPrivileged
that is activated if available.boolean
equals(java.lang.Object other)
java.lang.String
getDescriptor()
Returns the method descriptor of this method handle representation.JavaConstant.MethodHandle.HandleType
getHandleType()
Returns the handle type represented by this instance.java.lang.String
getName()
Returns the name represented by this instance.TypeDescription
getOwnerType()
Returns the owner type of this instance.TypeList
getParameterTypes()
Returns the parameter types represented by this instance.TypeDescription
getReturnType()
Returns the return type represented by this instance.TypeDescription
getTypeDescription()
Returns a description of the type of the represented instance or at least a stub.int
hashCode()
static java.lang.Class<?>
lookupType(java.lang.Object callerClassLookup)
Returns the lookup type of the providedjava.lang.invoke.MethodHandles$Lookup
instance.static JavaConstant.MethodHandle
of(java.lang.reflect.Constructor<?> constructor)
Creates a method handle representation of the given constructor.static JavaConstant.MethodHandle
of(java.lang.reflect.Method method)
Creates a method handle representation of the given method.static JavaConstant.MethodHandle
of(MethodDescription.InDefinedShape methodDescription)
Creates a method handle representation of the given method.static JavaConstant.MethodHandle
ofGetter(java.lang.reflect.Field field)
Returns a method handle for a setter of the given field.static JavaConstant.MethodHandle
ofGetter(FieldDescription.InDefinedShape fieldDescription)
Returns a method handle for a setter of the given field.static JavaConstant.MethodHandle
ofLoaded(java.lang.Object methodHandle)
Creates a method handles representation of a loaded method handle which is analyzed using a publicMethodHandles.Lookup
object.static JavaConstant.MethodHandle
ofLoaded(java.lang.Object methodHandle, java.lang.Object lookup)
Creates a method handles representation of a loaded method handle which is analyzed using the given lookup context.static JavaConstant.MethodHandle
ofSetter(java.lang.reflect.Field field)
Returns a method handle for a getter of the given field.static JavaConstant.MethodHandle
ofSetter(FieldDescription.InDefinedShape fieldDescription)
Returns a method handle for a getter of the given field.static JavaConstant.MethodHandle
ofSpecial(java.lang.reflect.Method method, java.lang.Class<?> type)
Creates a method handle representation of the given method for an explicit special method invocation of an otherwise virtual method.static JavaConstant.MethodHandle
ofSpecial(MethodDescription.InDefinedShape methodDescription, TypeDescription typeDescription)
Creates a method handle representation of the given method for an explicit special method invocation of an otherwise virtual method.java.lang.Object
toDescription()
Returns this constant as a Javajava.lang.constant.ConstantDesc
if the current VM is of at least version 12.java.lang.String
toString()
-
-
-
Field Detail
-
METHOD_HANDLE_INFO
protected static final JavaConstant.MethodHandle.MethodHandleInfo METHOD_HANDLE_INFO
A dispatcher to interact withjava.lang.invoke.MethodHandleInfo
.
-
METHOD_TYPE
protected static final JavaConstant.MethodHandle.MethodType METHOD_TYPE
A dispatcher to interact withjava.lang.invoke.MethodType
.
-
METHOD_HANDLES
protected static final JavaConstant.MethodHandle.MethodHandles METHOD_HANDLES
A dispatcher to interact withjava.lang.invoke.MethodHandles
.
-
METHOD_HANDLES_LOOKUP
protected static final JavaConstant.MethodHandle.MethodHandles.Lookup METHOD_HANDLES_LOOKUP
A dispatcher to interact withjava.lang.invoke.MethodHandles$Lookup
.
-
handleType
private final JavaConstant.MethodHandle.HandleType handleType
The handle type that is represented by this instance.
-
ownerType
private final TypeDescription ownerType
The owner type that is represented by this instance.
-
name
private final java.lang.String name
The name that is represented by this instance.
-
returnType
private final TypeDescription returnType
The return type that is represented by this instance.
-
parameterTypes
private final java.util.List<? extends TypeDescription> parameterTypes
The parameter types that is represented by this instance.
-
-
Constructor Detail
-
MethodHandle
protected MethodHandle(JavaConstant.MethodHandle.HandleType handleType, TypeDescription ownerType, java.lang.String name, TypeDescription returnType, java.util.List<? extends TypeDescription> parameterTypes)
Creates a method handle representation.- Parameters:
handleType
- The handle type that is represented by this instance.ownerType
- The owner type that is represented by this instance.name
- The name that is represented by this instance.returnType
- The return type that is represented by this instance.parameterTypes
- The parameter types that is represented by this instance.
-
-
Method Detail
-
doPrivileged
@Enhance private static <T> T doPrivileged(java.security.PrivilegedAction<T> action)
A proxy forjava.security.AccessController#doPrivileged
that is activated if available.- Type Parameters:
T
- The type of the action's resolved value.- Parameters:
action
- The action to execute from a privileged context.- Returns:
- The action's resolved value.
-
ofLoaded
public static JavaConstant.MethodHandle ofLoaded(java.lang.Object methodHandle)
Creates a method handles representation of a loaded method handle which is analyzed using a publicMethodHandles.Lookup
object. A method handle can only be analyzed on virtual machines that support the corresponding API (Java 7+). For virtual machines before Java 8+, a method handle instance can only be analyzed by taking advantage of private APIs what might require a access context.- Parameters:
methodHandle
- The loaded method handle to represent.- Returns:
- A representation of the loaded method handle
-
ofLoaded
public static JavaConstant.MethodHandle ofLoaded(java.lang.Object methodHandle, java.lang.Object lookup)
Creates a method handles representation of a loaded method handle which is analyzed using the given lookup context. A method handle can only be analyzed on virtual machines that support the corresponding API (Java 7+). For virtual machines before Java 8+, a method handle instance can only be analyzed by taking advantage of private APIs what might require a access context.- Parameters:
methodHandle
- The loaded method handle to represent.lookup
- The lookup object to use for analyzing the method handle.- Returns:
- A representation of the loaded method handle
-
of
public static JavaConstant.MethodHandle of(java.lang.reflect.Method method)
Creates a method handle representation of the given method.- Parameters:
method
- The method ro represent.- Returns:
- A method handle representing the given method.
-
of
public static JavaConstant.MethodHandle of(java.lang.reflect.Constructor<?> constructor)
Creates a method handle representation of the given constructor.- Parameters:
constructor
- The constructor ro represent.- Returns:
- A method handle representing the given constructor.
-
of
public static JavaConstant.MethodHandle of(MethodDescription.InDefinedShape methodDescription)
Creates a method handle representation of the given method.- Parameters:
methodDescription
- The method ro represent.- Returns:
- A method handle representing the given method.
-
ofSpecial
public static JavaConstant.MethodHandle ofSpecial(java.lang.reflect.Method method, java.lang.Class<?> type)
Creates a method handle representation of the given method for an explicit special method invocation of an otherwise virtual method.- Parameters:
method
- The method ro represent.type
- The type on which the method is to be invoked on as a special method invocation.- Returns:
- A method handle representing the given method as special method invocation.
-
ofSpecial
public static JavaConstant.MethodHandle ofSpecial(MethodDescription.InDefinedShape methodDescription, TypeDescription typeDescription)
Creates a method handle representation of the given method for an explicit special method invocation of an otherwise virtual method.- Parameters:
methodDescription
- The method ro represent.typeDescription
- The type on which the method is to be invoked on as a special method invocation.- Returns:
- A method handle representing the given method as special method invocation.
-
ofGetter
public static JavaConstant.MethodHandle ofGetter(java.lang.reflect.Field field)
Returns a method handle for a setter of the given field.- Parameters:
field
- The field to represent.- Returns:
- A method handle for a setter of the given field.
-
ofGetter
public static JavaConstant.MethodHandle ofGetter(FieldDescription.InDefinedShape fieldDescription)
Returns a method handle for a setter of the given field.- Parameters:
fieldDescription
- The field to represent.- Returns:
- A method handle for a setter of the given field.
-
ofSetter
public static JavaConstant.MethodHandle ofSetter(java.lang.reflect.Field field)
Returns a method handle for a getter of the given field.- Parameters:
field
- The field to represent.- Returns:
- A method handle for a getter of the given field.
-
ofSetter
public static JavaConstant.MethodHandle ofSetter(FieldDescription.InDefinedShape fieldDescription)
Returns a method handle for a getter of the given field.- Parameters:
fieldDescription
- The field to represent.- Returns:
- A method handle for a getter of the given field.
-
lookupType
public static java.lang.Class<?> lookupType(java.lang.Object callerClassLookup)
Returns the lookup type of the providedjava.lang.invoke.MethodHandles$Lookup
instance.- Parameters:
callerClassLookup
- An instance ofjava.lang.invoke.MethodHandles$Lookup
.- Returns:
- The instance's lookup type.
-
toDescription
public java.lang.Object toDescription()
Returns this constant as a Javajava.lang.constant.ConstantDesc
if the current VM is of at least version 12. If the current VM is of an older version and does not support the type, an exception is thrown.- Specified by:
toDescription
in interfaceJavaConstant
- Returns:
- This constant as a Java
java.lang.constant.ConstantDesc
.
-
accept
public <T> T accept(JavaConstant.Visitor<T> visitor)
Applies the supplied visitor to this constant type with its respective callback.- Specified by:
accept
in interfaceJavaConstant
- Type Parameters:
T
- The type of the value that is returned by the visitor.- Parameters:
visitor
- The visitor to dispatch.- Returns:
- The value that is returned by the supplied visitor.
-
getTypeDescription
public TypeDescription getTypeDescription()
Returns a description of the type of the represented instance or at least a stub.- Specified by:
getTypeDescription
in interfaceJavaConstant
- Returns:
- A description of the type of the represented instance or at least a stub.
-
getHandleType
public JavaConstant.MethodHandle.HandleType getHandleType()
Returns the handle type represented by this instance.- Returns:
- The handle type represented by this instance.
-
getOwnerType
public TypeDescription getOwnerType()
Returns the owner type of this instance.- Returns:
- The owner type of this instance.
-
getName
public java.lang.String getName()
Returns the name represented by this instance.- Returns:
- The name represented by this instance.
-
getReturnType
public TypeDescription getReturnType()
Returns the return type represented by this instance.- Returns:
- The return type represented by this instance.
-
getParameterTypes
public TypeList getParameterTypes()
Returns the parameter types represented by this instance.- Returns:
- The parameter types represented by this instance.
-
getDescriptor
public java.lang.String getDescriptor()
Returns the method descriptor of this method handle representation.- Returns:
- The method descriptor of this method handle representation.
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-