Package net.bytebuddy.utility
Class JavaConstant.Dynamic
java.lang.Object
net.bytebuddy.utility.JavaConstant.Dynamic
- All Implemented Interfaces:
ConstantValue,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.MethodHandleA handle representation of the bootstrap method.static final StringThe default name of a dynamic constant.private final StringThe name of the dynamic constant.private final TypeDescriptionA description of the represented value's type. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDynamic(String name, TypeDescription typeDescription, JavaConstant.MethodHandle bootstrap, List<JavaConstant> arguments) Creates a dynamic resolved constant. -
Method Summary
Modifier and TypeMethodDescription<T> Taccept(JavaConstant.Visitor<T> visitor) Applies the supplied visitor to this constant type with its respective callback.static JavaConstant.Dynamicbootstrap(String name, Constructor<?> constructor, Object... constant) Binds the supplied bootstrap constructor for the resolution of a dynamic constant.static JavaConstant.Dynamicbootstrap(String name, Constructor<?> constructor, List<?> constants) Binds the supplied bootstrap constructor for the resolution of a dynamic constant.static JavaConstant.DynamicBinds the supplied bootstrap method for the resolution of a dynamic constant.static JavaConstant.DynamicBinds the supplied bootstrap method for the resolution of a dynamic constant.static JavaConstant.Dynamicbootstrap(String name, MethodDescription.InDefinedShape bootstrapMethod, Object... constant) Binds the supplied bootstrap method or constructor for the resolution of a dynamic constant.static JavaConstant.Dynamicbootstrap(String name, MethodDescription.InDefinedShape bootstrap, List<?> arguments) Binds the supplied bootstrap method or constructor for the resolution of a dynamic constant.booleanReturns 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 this constant.inthashCode()static JavaConstantofArrayVarHandle(Class<?> type) Resolves a var handle constant for an array.static JavaConstantofArrayVarHandle(TypeDescription typeDescription) Resolves a var handle constant for an array.static JavaConstantofEnumeration(Enum<?> enumeration) Returns aEnumvalue constant.static JavaConstantofEnumeration(EnumerationDescription enumerationDescription) Returns aEnumvalue constant.static JavaConstant.DynamicReturns astatic,finalfield constant.static JavaConstant.DynamicofField(FieldDescription.InDefinedShape fieldDescription) Returns astatic,finalfield constant.static JavaConstant.DynamicofInvocation(Constructor<?> constructor, Object... constant) Represents a constant that is resolved by invoking a constructor.static JavaConstant.DynamicofInvocation(Constructor<?> constructor, List<?> constants) Represents a constant that is resolved by invoking a constructor.static JavaConstant.DynamicofInvocation(Method method, Object... constant) Represents a constant that is resolved by invoking astaticfactory method.static JavaConstant.DynamicofInvocation(Method method, List<?> constants) Represents a constant that is resolved by invoking astaticfactory method.static JavaConstant.DynamicofInvocation(MethodDescription.InDefinedShape methodDescription, Object... constant) Represents a constant that is resolved by invoking astaticfactory method or a constructor.static JavaConstant.DynamicofInvocation(MethodDescription.InDefinedShape methodDescription, List<?> constants) Represents a constant that is resolved by invoking astaticfactory method or a constructor.static JavaConstant.DynamicReturns a constantnullvalue of typeObject.static JavaConstantofPrimitiveType(Class<?> type) Returns aClassconstant for a primitive type.static JavaConstantofPrimitiveType(TypeDescription typeDescription) Returns aClassconstant for a primitive type.static JavaConstantofVarHandle(Field field) Resolves a var handle constant for a field.static JavaConstantofVarHandle(FieldDescription.InDefinedShape fieldDescription) Resolves a var handle constant for a field.Returns this constant as a Javajava.lang.constant.ConstantDescif the current VM is of at least version 12.Returns a stack manipulation loading this value.toString()Resolves thisJavaConstant.Dynamicconstant to resolve the returned instance to the supplied type.withType(TypeDescription typeDescription) Resolves thisJavaConstant.Dynamicconstant 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 constantnullvalue of typeObject.- Returns:
- A dynamically resolved null constant.
-
ofPrimitiveType
Returns aClassconstant for a primitive type.- Parameters:
type- The primitive type to represent.- Returns:
- A dynamically resolved primitive type constant.
-
ofPrimitiveType
Returns aClassconstant for a primitive type.- Parameters:
typeDescription- The primitive type to represent.- Returns:
- A dynamically resolved primitive type constant.
-
ofEnumeration
Returns aEnumvalue constant.- Parameters:
enumeration- The enumeration value to represent.- Returns:
- A dynamically resolved enumeration constant.
-
ofEnumeration
Returns aEnumvalue constant.- Parameters:
enumerationDescription- The enumeration value to represent.- Returns:
- A dynamically resolved enumeration constant.
-
ofField
Returns astatic,finalfield constant.- Parameters:
field- The field to represent a value of.- Returns:
- A dynamically resolved field value constant.
-
ofField
Returns astatic,finalfield 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 astaticfactory 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 astaticfactory 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, asStringor a primitiveint,long,floatordoublerepresented 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, asStringor a primitiveint,long,floatordoublerepresented 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, asStringor a primitiveint,long,floatordoublerepresented 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 astaticfactory 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, asStringor a primitiveint,long,floatordoublerepresented 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 astaticfactory 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, asStringor a primitiveint,long,floatordoublerepresented 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,TypeDescriptionorJavaConstantvalues 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, asStringor a primitiveint,long,floatordoublerepresented 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, asStringor a primitiveint,long,floatordoublerepresented 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, asStringor a primitiveint,long,floatordoublerepresented 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, asStringor a primitiveint,long,floatordoublerepresented 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<?> arguments) 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.arguments- The constant values passed to the bootstrap method. Values can be represented either asTypeDescription, asJavaConstant, asStringor a primitiveint,long,floatordoublerepresented 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.Dynamicconstant 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.Dynamicconstant 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.ConstantDescif 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:
toDescriptionin 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:
acceptin 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 this constant.- Specified by:
getTypeDescriptionin interfaceConstantValue- Returns:
- A description of the type of this constant.
-
toStackManipulation
Returns a stack manipulation loading this value.- Specified by:
toStackManipulationin interfaceConstantValue- Returns:
- A stack manipulation loading this value.
-
hashCode
public int hashCode() -
equals
-
toString
-