- All Known Subinterfaces:
MemoryLayout
public interface Constable
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_info
andCONSTANT_InvokeDynamic_info
Structures - Since:
- 12
-
Method Summary
Modifier and Type Method Description Optional<? extends ConstantDesc>
describeConstable()
-
Method Details
-
describeConstable
Optional<? extends ConstantDesc> describeConstable()
-