java.lang.Object
java.lang.constant.DynamicConstantDesc<T>
- Type Parameters:
- T- the type of the dynamic constant
- All Implemented Interfaces:
- ConstantDesc
- Direct Known Subclasses:
- Enum.EnumDesc,- VarHandle.VarHandleDesc
A nominal descriptor for a
 dynamic constant (one described in the constant pool with
 
Constant_Dynamic_info.)
 Concrete subtypes of DynamicConstantDesc should be immutable and their behavior should not rely on object identity.
- Since:
- 12
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedDynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs) Creates a nominal descriptor for a dynamic constant.
- 
Method SummaryModifier and TypeMethodDescriptionReturns the bootstrap arguments for this constant.Returns the bootstrap arguments for this constant as an immutableList.Returns aMethodHandleDescdescribing the bootstrap method for this constant.Returns the name that would appear in theNameAndTypeoperand of theLDCfor this constant.Returns aClassDescdescribing the type that would appear in theNameAndTypeoperand of theLDCfor this constant.final booleanCompares the specified object with this descriptor for equality.final inthashCode()Returns a hash code value for the object.static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod) Returns a nominal descriptor for a dynamic constant whose bootstrap has no static arguments, whose name parameter isConstantDescs.DEFAULT_NAME, and whose type parameter is always the same as the bootstrap method return type.static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod, ConstantDesc... bootstrapArgs) Returns a nominal descriptor for a dynamic constant whose name parameter isConstantDescs.DEFAULT_NAME, and whose type parameter is always the same as the bootstrap method return type.static <T> ConstantDescofCanonical(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc[] bootstrapArgs) Returns a nominal descriptor for a dynamic constant, transforming it into a more specific type if the constant bootstrap is a well-known one and a more specific nominal descriptor type (e.g., ClassDesc) is available.static <T> DynamicConstantDesc<T> ofNamed(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs) Returns a nominal descriptor for a dynamic constant.toString()Returns a compact textual description of this constant description, including the bootstrap method, the constant name and type, and the static bootstrap arguments.
- 
Constructor Details- 
DynamicConstantDescprotected DynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs) Creates a nominal descriptor for a dynamic constant.- Parameters:
- bootstrapMethod- a- DirectMethodHandleDescdescribing the bootstrap method for the constant
- constantName- The unqualified name that would appear in the- NameAndTypeoperand of the- LDCfor this constant
- constantType- a- ClassDescdescribing the type that would appear in the- NameAndTypeoperand of the- LDCfor this constant
- bootstrapArgs-- ConstantDescs describing the static arguments to the bootstrap, that would appear in the- BootstrapMethodsattribute
- Throws:
- NullPointerException- if any argument is null
- IllegalArgumentException- if the- namehas the incorrect format
- See Java Virtual Machine Specification:
- 
4.2.2 Unqualified Names
 
 
- 
- 
Method Details- 
ofCanonicalpublic static <T> ConstantDesc ofCanonical(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc[] bootstrapArgs) Returns a nominal descriptor for a dynamic constant, transforming it into a more specific type if the constant bootstrap is a well-known one and a more specific nominal descriptor type (e.g., ClassDesc) is available.Classes whose Constable.describeConstable()method produce a DynamicConstantDesc with a well-known bootstrap includingClass(for instances describing primitive types),Enum, andVarHandle.Bytecode-reading APIs that process the constant pool and wish to expose entries as ConstantDescto their callers should generally use this method in preference toofNamed(DirectMethodHandleDesc, String, ClassDesc, ConstantDesc...)because this may result in a more specific type that can be provided to callers.- Type Parameters:
- T- the type of the dynamic constant
- Parameters:
- bootstrapMethod- a- DirectMethodHandleDescdescribing the bootstrap method for the constant
- constantName- The unqualified name that would appear in the- NameAndTypeoperand of the- LDCfor this constant
- constantType- a- ClassDescdescribing the type that would appear in the- NameAndTypeoperand of the- LDCfor this constant
- bootstrapArgs-- ConstantDescs describing the static arguments to the bootstrap, that would appear in the- BootstrapMethodsattribute
- Returns:
- the nominal descriptor
- Throws:
- NullPointerException- if any argument is null
- IllegalArgumentException- if the- namehas the incorrect format
- See Java Virtual Machine Specification:
- 
4.2.2 Unqualified Names
 
- 
ofNamedpublic static <T> DynamicConstantDesc<T> ofNamed(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs) Returns a nominal descriptor for a dynamic constant.- Type Parameters:
- T- the type of the dynamic constant
- Parameters:
- bootstrapMethod- a- DirectMethodHandleDescdescribing the bootstrap method for the constant
- constantName- The unqualified name that would appear in the- NameAndTypeoperand of the- LDCfor this constant
- constantType- a- ClassDescdescribing the type that would appear in the- NameAndTypeoperand of the- LDCfor this constant
- bootstrapArgs-- ConstantDescs describing the static arguments to the bootstrap, that would appear in the- BootstrapMethodsattribute
- Returns:
- the nominal descriptor
- Throws:
- NullPointerException- if any argument is null
- IllegalArgumentException- if the- namehas the incorrect format
- See Java Virtual Machine Specification:
- 
4.2.2 Unqualified Names
 
- 
ofpublic static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod, ConstantDesc... bootstrapArgs) Returns a nominal descriptor for a dynamic constant whose name parameter isConstantDescs.DEFAULT_NAME, and whose type parameter is always the same as the bootstrap method return type.- Type Parameters:
- T- the type of the dynamic constant
- Parameters:
- bootstrapMethod- a- DirectMethodHandleDescdescribing the bootstrap method for the constant
- bootstrapArgs-- ConstantDescs describing the static arguments to the bootstrap, that would appear in the- BootstrapMethodsattribute
- Returns:
- the nominal descriptor
- Throws:
- NullPointerException- if any argument is null
- See Java Virtual Machine Specification:
- 
4.2.2 Unqualified Names
 
- 
ofReturns a nominal descriptor for a dynamic constant whose bootstrap has no static arguments, whose name parameter isConstantDescs.DEFAULT_NAME, and whose type parameter is always the same as the bootstrap method return type.- Type Parameters:
- T- the type of the dynamic constant
- Parameters:
- bootstrapMethod- a- DirectMethodHandleDescdescribing the bootstrap method for the constant
- Returns:
- the nominal descriptor
- Throws:
- NullPointerException- if any argument is null
 
- 
constantNameReturns the name that would appear in theNameAndTypeoperand of theLDCfor this constant.- Returns:
- the constant name
 
- 
constantTypeReturns aClassDescdescribing the type that would appear in theNameAndTypeoperand of theLDCfor this constant.- Returns:
- the constant type
 
- 
bootstrapMethodReturns aMethodHandleDescdescribing the bootstrap method for this constant.- Returns:
- the bootstrap method
 
- 
bootstrapArgsReturns the bootstrap arguments for this constant.- Returns:
- the bootstrap arguments
 
- 
bootstrapArgsListReturns the bootstrap arguments for this constant as an immutableList.- Returns:
- a Listof the bootstrap arguments
 
- 
resolveConstantDescDescription copied from interface:ConstantDescResolves this descriptor reflectively, emulating the resolution behavior of JVMS 5.4.3 and the access control behavior of JVMS 5.4.4. The resolution and access control context is provided by theMethodHandles.Lookupparameter. No caching of the resulting value is performed.- Specified by:
- resolveConstantDescin interface- ConstantDesc
- Parameters:
- lookup- The- MethodHandles.Lookupto provide name resolution and access control context
- Returns:
- the resolved constant value
- Throws:
- ReflectiveOperationException- if a class, method, or field could not be reflectively resolved in the course of resolution
 
- 
equalsCompares the specified object with this descriptor for equality. Returnstrueif and only if the specified object is also a DynamicConstantDesc, and both descriptors have equal bootstrap methods, bootstrap argument lists, constant name, and constant type.
- 
hashCodepublic final int hashCode()Description copied from class:ObjectReturns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided byHashMap.The general contract of hashCodeis:- Whenever it is invoked on the same object more than once during
     an execution of a Java application, the hashCodemethod must consistently return the same integer, provided no information used inequalscomparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
- If two objects are equal according to the equalsmethod, then calling thehashCodemethod on each of the two objects must produce the same integer result.
- It is not required that if two objects are unequal
     according to the equalsmethod, then calling thehashCodemethod on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
 
- Whenever it is invoked on the same object more than once during
     an execution of a Java application, the 
- 
toStringReturns a compact textual description of this constant description, including the bootstrap method, the constant name and type, and the static bootstrap arguments.
 
-