模块 java.base

接口 Constable


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.10 CONSTANT_Dynamic_infoCONSTANT_InvokeDynamic_info 结构
自从:
12
  • 方法详情

    • describeConstable

      Optional <? extends ConstantDesc > describeConstable()
      如果可以构造,则返回包含此实例标称描述符的 Optional ,如果无法构造,则返回空的 Optional
      返回:
      包含生成的标称描述符的 Optional ,或者如果无法构造则为空的 Optional