Java 为什么describeConstable是可选的?
在什么情况下,Java 为什么describeConstable是可选的?,java,java-12,Java,Java 12,在什么情况下,someEnum.descripbeconstable()无法返回EnumDesc i、 e.它将返回一个空的可选的方法源于接口,而不是源于。从的文档: constable类型实例的标称形式通过以下方式获得:A不需要(或可能选择不)以A的形式描述其所有实例;此方法返回可以为空的,以指示无法为实例创建标称描述符。(例如,将为直接方法句柄生成标称描述符,但不一定是由方法句柄组合器生成的描述符。) 看到Java了吗™ 虚拟机规范: 4.4常量池,4.4.10常量调用动态信息结构 d
someEnum.descripbeconstable()
无法返回EnumDesc
i、 e.它将返回一个空的可选的方法源于接口,而不是源于。从的文档:
constable类型实例的标称形式通过以下方式获得:A不需要(或可能选择不)以A的形式描述其所有实例;此方法返回可以为空的,以指示无法为实例创建标称描述符。(例如,将为直接方法句柄生成标称描述符,但不一定是由方法句柄组合器生成的描述符。)
看到Java了吗™ 虚拟机规范:
4.4常量池,4.4.10常量调用动态信息结构
descripbeconstable()
是从接口继承的方法,其中的描述为:
如果可以构造,则返回包含此实例的标称描述符的Optional
,如果无法构造,则返回空的Optional
当然,在某些类中,例如,它永远不能为空:
返回一个可选
,其中包含此实例的标称描述符,即实例本身
但返回值是可选的,因为并非所有接口实现都是如此
的javadoc中有这样一句话:
警员不需要(或可以选择不)以ConstantDesc
的形式描述其所有实例;此方法返回一个可选
,该值可以为空,以指示无法为实例创建标称描述符。(例如,MethodHandle
将为直接方法句柄生成标称描述符,但不一定是由方法句柄组合器生成的描述符。)
@谢谢你解释我在看什么。我感到惊讶的是,Enum的文档中没有更具体地描述它的describeConstable
实现。这就是说,在任何地方指定Enum
都不会在此处返回空的可选的
。@WilliamEntriken:“对于此实例,如果可以构造,则返回枚举描述符EnumDesc
,如果不能构造,则返回空的可选的
。-不太具体