我如何区分JVM ClassFile中的attribute_info?

How can I distinguish attribute_info in JVM ClassFile?

我正在研究 The ClassFile Structure

根据上面的文档,attribute_info可以出现在各种位置。

我的问题是如何区分attribute_info的类型?

我知道我可以通过 tag 来区分 constant_info

我如何区分attribute_infos?

所有 attribute_info 看起来都是这样。

attribute_info {
    u2 attribute_name_index;
    u4 attribute_length;
    u1 info[attribute_length];
}

Fields似乎有attribute_info of ConstantValue, Synthetic,等等。

如何区分它们的类型?

我明白了。

The constant_pool entry at attribute_name_index must be a CONSTANT_Utf8_info structure (§4.4.7) representing the name of the attribute.