Java字节码(.class文件)格式详解(三) (四)

2014-11-24 02:33:29 · 作者: · 浏览: 2
me,好像就是类型名,以descriptor的形式表示)。

u2

const_name_index

constant_pool中的索引,CONSTANT_Utf8_info类型。记录当前枚举类型的值(枚举类型内部成员字符串)。

enum_const_value

u2

class_info_index

constant_pool中的索引,CONSTANT_Utf8_info类型。以descriptor记录当前值所表达的Class类型。当tag值为’c’时,该项有效。

annotation

annotation_value

当tag值为’@’时,该项有效。记录当前annotation键值对中的值为内嵌的annotation。

array_value

当tag值为’[‘时,该项有效。记录当前annotation键值对中的值为数组类型。

u2

num_values

数组的长度。

element_value

values[num_values]

每一项记录数组中的值。

array_value

value

注:从这个结构中,我们也可以得出annotation中可以设置的值类型:

1. 基本类型值(byte、char、double、float、int、long、short、boolean)

2. 字符串(String)

3. 枚举(enum)

4. 类实例(Class)

5. 嵌套注解类型(annotation)

6. 以上所有以上类型的一维数组。

作者“上善若水”