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.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<?> constants) 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 the represented instance or at least a stub.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.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<?> 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, 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 the represented instance or at least a stub.- Specified by:
getTypeDescriptionin interfaceJavaConstant- Returns:
- A description of the type of the represented instance or at least a stub.
-
hashCode
public int hashCode() -
equals
-
toString
-