【发布时间】:2023-04-01 04:35:01
【问题描述】:
【问题讨论】:
【问题讨论】:
请注意,前面的条目的类型为 Long 和 its documentation 表示:
所有 8 字节常量在
class文件的constant_pool表中占据两个条目。如果CONSTANT_Long_info或CONSTANT_Double_info结构是constant_pool表中索引n 处的项目,则池中的下一个可用项目位于索引n +2。constant_pool索引 n+1 必须有效但被视为不可用。
和整洁的补充
回想起来,让 8 字节常量占用两个常量池条目是一个糟糕的选择。
所以javap 决定直接跳过不可用的条目,而不是打印诸如“#3 unusable”之类的内容……
【讨论】:
Long 和 Doubles 占用常量池中的两个插槽,因此跳过它们之后的插槽。在这种情况下,插槽 2 持有 Long,因此插槽 3 被跳过。
【讨论】: