为什么JVM Classfile中的attribute_name_index是索引?

问题描述 投票:-1回答:2

此页面https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7

对于所有属性,attribute_name_index必须是该类的常量池中的有效无符号16位索引。

但是,我想知道该字段是否直接代表其自身类型比当前规范要好。

(例如,如果attribute_name_index == 0x01,则将属性种类固定为StackMapTable,而无需引用常量池。

当前规格的优点是什么?

java jvm specifications .class-file
2个回答
0
投票

Java属性几乎可以使用任何字符串作为名称。这是一个可扩展的系统。 JVM规范定义了几十个标准属性,但是用户也可以定义自己的自定义属性(Scala尤其使用此功能来实现特定于Scala的运行时功能)。


0
投票

当前规格的优点是什么?

  • 它是可扩展的。

  • 它紧凑;例如可以在类文件的多个位置引用一个字符串池条目。

  • 这是一致的。

  • 已指定,并且该规范被广泛采用。

  • 已实现。

但是,这完全没有意义...除非您打算实现自己的新类文件格式。

© www.soinside.com 2019 - 2024. All rights reserved.