Interface Constable
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 (JVMS4.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_info
andCONSTANT_InvokeDynamic_info
Structures - Since:
- 12
Method Summary
Method Details
describeConstable
Optional<? extendsConstantDesc> describeConstable()