- All Known Subinterfaces:
MemoryLayout
ConstantDesc.Some constable types have a native representation in the constant pool:String,Integer,Long,Float,Double,Class,MethodType, andMethodHandle. The typesString,Integer,Long,Float, andDouble serve as their own nominal descriptors;Class,MethodType, andMethodHandle have corresponding nominal descriptorsClassDesc,MethodTypeDesc, andMethodHandleDesc.
Other reference types can be constable if their instances can describe themselves in nominal form as aConstantDesc. Examples in the Java SE Platform API are types that support Java language features such asEnum, and runtime support classes such asVarHandle. These are typically described with aDynamicConstantDesc, which describes dynamically generated constants (JVMS 4.4.10).
The nominal form of an instance of a constable type is obtained viadescribeConstable(). AConstable need not be able to (or may choose not to) describe all its instances in the form of aConstantDesc; this method returns anOptional 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.)
- SeeJava Virtual Machine Specification:
- 4.4 The Constant Pool
4.4.10 TheCONSTANT_Dynamic_infoandCONSTANT_InvokeDynamic_infoStructures - Since:
- 12
Method Summary
Method Details
describeConstable
Optional<? extendsConstantDesc> describeConstable()