public interface Constable
表示类型 constable 。 constable 类型是一种其值为常量的类型,如 JVMS 4.4 中所述,其值可以在 Java 类文件的常量池中表示,并且其实例名义上可以将自身描述为
ConstantDesc
。
某些 constable 类型在常量池中具有本机表示:String
、Integer
、Long
、Float
、Double
、Class
、MethodType
和 MethodHandle
。类型 String
、 Integer
、 Long
、 Float
和 Double
作为它们自己的标称描述符; Class
、MethodType
和 MethodHandle
具有对应的标称描述符 ClassDesc
、MethodTypeDesc
和 MethodHandleDesc
。
如果其他引用类型的实例可以以名义形式将自己描述为 ConstantDesc
,则其他引用类型可以是 constable 的。 Java SE Platform API 中的示例是支持 Java 语言功能的类型(例如 Enum
)和运行时支持类(例如 VarHandle
)。这些通常用 DynamicConstantDesc
描述,它描述动态生成的常量 (JVMS 4.4.10)。
constable 类型实例的名义形式是通过 describeConstable()
获得的。 Constable 不需要能够(或者可以选择不)以 ConstantDesc
的形式描述它的所有实例;此方法返回一个可以为空的 Optional
以指示无法为实例创建标称描述符。 (例如,MethodHandle
将为直接方法句柄生成标称描述符,但不一定由方法句柄组合器生成。)
- 看Java 虚拟机规范:
-
4.4 常量池
4.4.10CONSTANT_Dynamic_info
和CONSTANT_InvokeDynamic_info
结构
- 自从:
- 12
-
方法总结
-
方法详情
-
describeConstable
Optional <? extends ConstantDesc > describeConstable()
-