此页面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规范定义了几十个标准属性,但是用户也可以定义自己的自定义属性(Scala尤其使用此功能来实现特定于Scala的运行时功能)。
当前规格的优点是什么?
它是可扩展的。
它紧凑;例如可以在类文件的多个位置引用一个字符串池条目。
这是一致的。
已指定,并且该规范被广泛采用。
已实现。
但是,这完全没有意义...除非您打算实现自己的新类文件格式。