Package org.objectweb.asm
Class ConstantDynamic
java.lang.Object
org.objectweb.asm.ConstantDynamic
A constant whose value is computed at runtime, with a bootstrap method.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final HandleThe bootstrap method to use to compute the constant value at runtime.private final Object[]The arguments to pass to the bootstrap method, in order to compute the constant value at runtime.private final StringThe constant type (must be a field descriptor).private final StringThe constant name (can be arbitrary). -
Constructor Summary
ConstructorsConstructorDescriptionConstantDynamic(String name, String descriptor, Handle bootstrapMethod, Object... bootstrapMethodArguments) Constructs a newConstantDynamic. -
Method Summary
Modifier and TypeMethodDescriptionbooleanReturns the bootstrap method used to compute the value of this constant.getBootstrapMethodArgument(int index) Returns an argument passed to the bootstrap method, in order to compute the value of this constant.intReturns the number of arguments passed to the bootstrap method, in order to compute the value of this constant.(package private) Object[]Returns the arguments to pass to the bootstrap method, in order to compute the value of this constant.Returns the type of this constant.getName()Returns the name of this constant.intgetSize()Returns the size of this constant.inthashCode()(package private) intsubtractTreeSize(int size) Returns the given value minus the total number of ConstantDynamic objects in this constant and its bootstrap method arguments (recursively, and viewing the structure as a tree).toString()private booleantoString(StringBuilder stringBuilder) Appends a string representation of this object into the given builder.
-
Field Details
-
name
The constant name (can be arbitrary). -
descriptor
The constant type (must be a field descriptor). -
bootstrapMethod
The bootstrap method to use to compute the constant value at runtime. -
bootstrapMethodArguments
The arguments to pass to the bootstrap method, in order to compute the constant value at runtime.
-
-
Constructor Details
-
ConstantDynamic
public ConstantDynamic(String name, String descriptor, Handle bootstrapMethod, Object... bootstrapMethodArguments) Constructs a newConstantDynamic.- Parameters:
name- the constant name (can be arbitrary).descriptor- the constant type (must be a field descriptor).bootstrapMethod- the bootstrap method to use to compute the constant value at runtime.bootstrapMethodArguments- the arguments to pass to the bootstrap method, in order to compute the constant value at runtime.
-
-
Method Details
-
getName
Returns the name of this constant.- Returns:
- the name of this constant.
-
getDescriptor
Returns the type of this constant.- Returns:
- the type of this constant, as a field descriptor.
-
getBootstrapMethod
Returns the bootstrap method used to compute the value of this constant.- Returns:
- the bootstrap method used to compute the value of this constant.
-
getBootstrapMethodArgumentCount
public int getBootstrapMethodArgumentCount()Returns the number of arguments passed to the bootstrap method, in order to compute the value of this constant.- Returns:
- the number of arguments passed to the bootstrap method, in order to compute the value of this constant.
-
getBootstrapMethodArgument
Returns an argument passed to the bootstrap method, in order to compute the value of this constant.- Parameters:
index- an argument index, between 0 andgetBootstrapMethodArgumentCount()(exclusive).- Returns:
- the argument passed to the bootstrap method, with the given index.
-
getBootstrapMethodArgumentsUnsafe
Object[] getBootstrapMethodArgumentsUnsafe()Returns the arguments to pass to the bootstrap method, in order to compute the value of this constant. WARNING: this array must not be modified, and must not be returned to the user.- Returns:
- the arguments to pass to the bootstrap method, in order to compute the value of this constant.
-
getSize
public int getSize()Returns the size of this constant.- Returns:
- the size of this constant, i.e., 2 for
longanddouble, 1 otherwise.
-
equals
-
hashCode
public int hashCode() -
toString
-
toString
Appends a string representation of this object into the given builder. Stops when the string reaches or exceeds 16384 characters. The nested ConstantDynamic, if any, are viewed as a tree (and represented as such in the resulting string), even if they actually form a DAG.- Parameters:
stringBuilder- where to append the string representation.- Returns:
- whether the full string representation fits in 16384 characters.
-
subtractTreeSize
int subtractTreeSize(int size) Returns the given value minus the total number of ConstantDynamic objects in this constant and its bootstrap method arguments (recursively, and viewing the structure as a tree). Stops as soon as the total number found so far is equal to the given value (and returns 0).- Parameters:
size- the maximum number of ConstantDynamic objects to visit (the same object can be visited several times in case a DAG, or if there is a cycle).- Returns:
- size minus the number of nested ConstantDynamic objects found, clamped to 0.
-