ConstantDesc.
Some constable types have a native representation in the constant pool:
String, Integer, Long, Float,
Double, Class, MethodType, and MethodHandle.
The types String, Integer, Long, Float,
and Double serve as their own nominal descriptors; Class,
MethodType, and MethodHandle have corresponding nominal
descriptors ClassDesc, MethodTypeDesc, and MethodHandleDesc.
Other reference types can be constable if their instances can describe
themselves in nominal form as a ConstantDesc. Examples in the Java SE
Platform API are types that support Java language features such as Enum,
and runtime support classes such as VarHandle. These are typically
described with a DynamicConstantDesc, which describes dynamically
generated constants (JVMS 4.4.10).
The nominal form of an instance of a constable type is obtained via
describeConstable(). A Constable need
not be able to (or may choose not to) describe all its instances in the form of
a ConstantDesc; this method returns an Optional that can be
empty to indicate that a nominal descriptor could not be created for an instance.
(For example, MethodHandle will produce nominal descriptors for direct
method handles, but not necessarily those produced by method handle
combinators.)
- See Java Virtual Machine Specification:
-
4.4 The Constant Pool
4.4.10 TheCONSTANT_Dynamic_infoandCONSTANT_InvokeDynamic_infoStructures - Since:
- 12
-
Method Summary
-
Method Details
-
describeConstable
Optional<? extends ConstantDesc> describeConstable()
-