Package net.bytebuddy.utility
Class JavaConstant.Dynamic
java.lang.Object
net.bytebuddy.utility.JavaConstant.Dynamic
- All Implemented Interfaces:
JavaConstant
- Enclosing interface:
- JavaConstant
Represents a dynamically resolved constant pool entry of a class file. This feature is supported for class files in version 11 and newer.
-
Nested Class Summary
Nested classes/interfaces inherited from interface net.bytebuddy.utility.JavaConstant
JavaConstant.Dynamic, JavaConstant.MethodHandle, JavaConstant.MethodType, JavaConstant.Simple<T>, JavaConstant.Visitor<T>
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final List<JavaConstant>
A list of the arguments to the dynamic constant.private final JavaConstant.MethodHandle
A handle representation of the bootstrap method.static final String
The default name of a dynamic constant.private final String
The name of the dynamic constant.private final TypeDescription
A description of the represented value's type. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Dynamic
(String name, TypeDescription typeDescription, JavaConstant.MethodHandle bootstrap, List<JavaConstant> arguments) Creates a dynamic resolved constant. -
Method Summary
Modifier and TypeMethodDescription<T> T
accept
(JavaConstant.Visitor<T> visitor) Applies the supplied visitor to this constant type with its respective callback.static JavaConstant.Dynamic
bootstrap
(String name, Constructor<?> constructor, Object... constant) Binds the supplied bootstrap constructor for the resolution of a dynamic constant.static JavaConstant.Dynamic
bootstrap
(String name, Constructor<?> constructor, List<?> constants) Binds the supplied bootstrap constructor for the resolution of a dynamic constant.static JavaConstant.Dynamic
Binds the supplied bootstrap method for the resolution of a dynamic constant.static JavaConstant.Dynamic
Binds the supplied bootstrap method for the resolution of a dynamic constant.static JavaConstant.Dynamic
bootstrap
(String name, MethodDescription.InDefinedShape bootstrapMethod, Object... constant) Binds the supplied bootstrap method or constructor for the resolution of a dynamic constant.static JavaConstant.Dynamic
bootstrap
(String name, MethodDescription.InDefinedShape bootstrap, List<?> constants) Binds the supplied bootstrap method or constructor for the resolution of a dynamic constant.boolean
Returns a list of the arguments to the dynamic constant.Returns a handle representation of the bootstrap method.getName()
Returns the name of the dynamic constant.Returns a description of the type of the represented instance or at least a stub.int
hashCode()
static JavaConstant
ofArrayVarHandle
(Class<?> type) Resolves a var handle constant for an array.static JavaConstant
ofArrayVarHandle
(TypeDescription typeDescription) Resolves a var handle constant for an array.static JavaConstant
ofEnumeration
(Enum<?> enumeration) Returns aEnum
value constant.static JavaConstant
ofEnumeration
(EnumerationDescription enumerationDescription) Returns aEnum
value constant.static JavaConstant.Dynamic
Returns astatic
,final
field constant.static JavaConstant.Dynamic
ofField
(FieldDescription.InDefinedShape fieldDescription) Returns astatic
,final
field constant.static JavaConstant.Dynamic
ofInvocation
(Constructor<?> constructor, Object... constant) Represents a constant that is resolved by invoking a constructor.static JavaConstant.Dynamic
ofInvocation
(Constructor<?> constructor, List<?> constants) Represents a constant that is resolved by invoking a constructor.static JavaConstant.Dynamic
ofInvocation
(Method method, Object... constant) Represents a constant that is resolved by invoking astatic
factory method.static JavaConstant.Dynamic
ofInvocation
(Method method, List<?> constants) Represents a constant that is resolved by invoking astatic
factory method.static JavaConstant.Dynamic
ofInvocation
(MethodDescription.InDefinedShape methodDescription, Object... constant) Represents a constant that is resolved by invoking astatic
factory method or a constructor.static JavaConstant.Dynamic
ofInvocation
(MethodDescription.InDefinedShape methodDescription, List<?> constants) Represents a constant that is resolved by invoking astatic
factory method or a constructor.static JavaConstant.Dynamic
Returns a constantnull
value of typeObject
.static JavaConstant
ofPrimitiveType
(Class<?> type) Returns aClass
constant for a primitive type.static JavaConstant
ofPrimitiveType
(TypeDescription typeDescription) Returns aClass
constant for a primitive type.static JavaConstant
ofVarHandle
(Field field) Resolves a var handle constant for a field.static JavaConstant
ofVarHandle
(FieldDescription.InDefinedShape fieldDescription) Resolves a var handle constant for a field.Returns this constant as a Javajava.lang.constant.ConstantDesc
if the current VM is of at least version 12.toString()
Resolves thisJavaConstant.Dynamic
constant to resolve the returned instance to the supplied type.withType
(TypeDescription typeDescription) Resolves thisJavaConstant.Dynamic
constant to resolve the returned instance to the supplied type.
-
Field Details
-
DEFAULT_NAME
The default name of a dynamic constant.- See Also:
-
name
The name of the dynamic constant. -
typeDescription
A description of the represented value's type. -
bootstrap
A handle representation of the bootstrap method. -
arguments
A list of the arguments to the dynamic constant.
-
-
Constructor Details
-
Dynamic
protected Dynamic(String name, TypeDescription typeDescription, JavaConstant.MethodHandle bootstrap, List<JavaConstant> arguments) Creates a dynamic resolved constant.- Parameters:
name
- The name of the dynamic constant.typeDescription
- A description of the represented value's type.bootstrap
- A handle representation of the bootstrap method.arguments
- A list of the arguments to the dynamic constant.
-
-
Method Details
-
ofNullConstant
Returns a constantnull
value of typeObject
.- Returns:
- A dynamically resolved null constant.
-
ofPrimitiveType
Returns aClass
constant for a primitive type.- Parameters:
type
- The primitive type to represent.- Returns:
- A dynamically resolved primitive type constant.
-
ofPrimitiveType
Returns aClass
constant for a primitive type.- Parameters:
typeDescription
- The primitive type to represent.- Returns:
- A dynamically resolved primitive type constant.
-
ofEnumeration
Returns aEnum
value constant.- Parameters:
enumeration
- The enumeration value to represent.- Returns:
- A dynamically resolved enumeration constant.
-
ofEnumeration
Returns aEnum
value constant.- Parameters:
enumerationDescription
- The enumeration value to represent.- Returns:
- A dynamically resolved enumeration constant.
-
ofField
Returns astatic
,final
field constant.- Parameters:
field
- The field to represent a value of.- Returns:
- A dynamically resolved field value constant.
-
ofField
Returns astatic
,final
field constant.- Parameters:
fieldDescription
- The field to represent a value of.- Returns:
- A dynamically resolved field value constant.
-
ofInvocation
Represents a constant that is resolved by invoking astatic
factory method.- Parameters:
method
- The method to invoke to create the represented constant value.constant
- The method's constant arguments.- Returns:
- A dynamic constant that is resolved by the supplied factory method.
-
ofInvocation
Represents a constant that is resolved by invoking astatic
factory method.- Parameters:
method
- The method to invoke to create the represented constant value.constants
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that is resolved by the supplied factory method.
-
ofInvocation
Represents a constant that is resolved by invoking a constructor.- Parameters:
constructor
- The constructor to invoke to create the represented constant value.constant
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that is resolved by the supplied constuctor.
-
ofInvocation
Represents a constant that is resolved by invoking a constructor.- Parameters:
constructor
- The constructor to invoke to create the represented constant value.constants
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that is resolved by the supplied constuctor.
-
ofInvocation
public static JavaConstant.Dynamic ofInvocation(MethodDescription.InDefinedShape methodDescription, Object... constant) Represents a constant that is resolved by invoking astatic
factory method or a constructor.- Parameters:
methodDescription
- The method or constructor to invoke to create the represented constant value.constant
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that is resolved by the supplied factory method or constructor.
-
ofInvocation
public static JavaConstant.Dynamic ofInvocation(MethodDescription.InDefinedShape methodDescription, List<?> constants) Represents a constant that is resolved by invoking astatic
factory method or a constructor.- Parameters:
methodDescription
- The method or constructor to invoke to create the represented constant value.constants
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that is resolved by the supplied factory method or constructor.
-
ofVarHandle
Resolves a var handle constant for a field.- Parameters:
field
- The field to represent a var handle for.- Returns:
- A dynamic constant that represents the created var handle constant.
-
ofVarHandle
Resolves a var handle constant for a field.- Parameters:
fieldDescription
- The field to represent a var handle for.- Returns:
- A dynamic constant that represents the created var handle constant.
-
ofArrayVarHandle
Resolves a var handle constant for an array.- Parameters:
type
- The array type for which the var handle is resolved.- Returns:
- A dynamic constant that represents the created var handle constant.
-
ofArrayVarHandle
Resolves a var handle constant for an array.- Parameters:
typeDescription
- The array type for which the var handle is resolved.- Returns:
- A dynamic constant that represents the created var handle constant.
-
bootstrap
Binds the supplied bootstrap method for the resolution of a dynamic constant.- Parameters:
name
- The name of the bootstrap constant that is provided to the bootstrap method or constructor.method
- The bootstrap method to invoke.constant
- The arguments for the bootstrap method represented as primitive wrapper types,String
,TypeDescription
orJavaConstant
values or their loaded forms.- Returns:
- A dynamic constant that represents the bootstrapped method's result.
-
bootstrap
Binds the supplied bootstrap method for the resolution of a dynamic constant.- Parameters:
name
- The name of the bootstrap constant that is provided to the bootstrap method or constructor.method
- The bootstrap method to invoke.constants
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that represents the bootstrapped method's result.
-
bootstrap
public static JavaConstant.Dynamic bootstrap(String name, Constructor<?> constructor, Object... constant) Binds the supplied bootstrap constructor for the resolution of a dynamic constant.- Parameters:
name
- The name of the bootstrap constant that is provided to the bootstrap method or constructor.constructor
- The bootstrap constructor to invoke.constant
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that represents the bootstrapped constructor's result.
-
bootstrap
public static JavaConstant.Dynamic bootstrap(String name, Constructor<?> constructor, List<?> constants) Binds the supplied bootstrap constructor for the resolution of a dynamic constant.- Parameters:
name
- The name of the bootstrap constant that is provided to the bootstrap method or constructor.constructor
- The bootstrap constructor to invoke.constants
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that represents the bootstrapped constructor's result.
-
bootstrap
public static JavaConstant.Dynamic bootstrap(String name, MethodDescription.InDefinedShape bootstrapMethod, Object... constant) Binds the supplied bootstrap method or constructor for the resolution of a dynamic constant.- Parameters:
name
- The name of the bootstrap constant that is provided to the bootstrap method or constructor.bootstrapMethod
- The bootstrap method or constructor to invoke.constant
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that represents the bootstrapped method's or constructor's result.
-
bootstrap
public static JavaConstant.Dynamic bootstrap(String name, MethodDescription.InDefinedShape bootstrap, List<?> constants) Binds the supplied bootstrap method or constructor for the resolution of a dynamic constant.- Parameters:
name
- The name of the bootstrap constant that is provided to the bootstrap method or constructor.bootstrap
- The bootstrap method or constructor to invoke.constants
- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription
, asJavaConstant
, asString
or a primitiveint
,long
,float
ordouble
represented as wrapper type.- Returns:
- A dynamic constant that represents the bootstrapped method's or constructor's result.
-
getName
Returns the name of the dynamic constant.- Returns:
- The name of the dynamic constant.
-
getBootstrap
Returns a handle representation of the bootstrap method.- Returns:
- A handle representation of the bootstrap method.
-
getArguments
Returns a list of the arguments to the dynamic constant.- Returns:
- A list of the arguments to the dynamic constant.
-
withType
Resolves thisJavaConstant.Dynamic
constant to resolve the returned instance to the supplied type. The type must be a subtype of the bootstrap method's return type. Constructors cannot be resolved to a different type.- Parameters:
type
- The type to resolve the bootstrapped value to.- Returns:
- This dynamic constant but resolved to the supplied type.
-
withType
Resolves thisJavaConstant.Dynamic
constant to resolve the returned instance to the supplied type. The type must be a subtype of the bootstrap method's return type. Constructors cannot be resolved to a different type.- Parameters:
typeDescription
- The type to resolve the bootstrapped value to.- Returns:
- This dynamic constant but resolved to the supplied type.
-
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
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
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.
-
hashCode
public int hashCode() -
equals
-
toString
-