这一部分是续接.class解读2---常量池(1)
明确了对于常量池这种有多个元素的东西一定会有一个前置计数的参数表示这些元素有多少个。后面依次去写明每个元素的内容是什么通常有下图这样的“字典表”可以供给我们去逐个查询。
对于常量池中的每一项都会有一个tag,这个tag占据一个字节的宽度,用来标识这个常量中的内容是什么
例如,0Xoa,表示十进制的10,这个10通过查表可以看出来是表示类中方法的符号引用。具体内容可以看出,接下来的两个字节表示Class_Info的索引,然后的两个字节表示CONSTANT_NameAndType索引。反之就是根据这个索引,去查就行了,最终一定会落到一些符号引用上。其实就是不同的组合而已。
特别说明
01这个tag表示的是CONSTANT_UTF-8_info。后面的两个字节表示这个字符串的长度,这个字符常量的长度。.class文件是不会保存各个方法属性的内存信息的,不经过运行时的转换后是不能得到实际的内存地址的,而这个转换过程则是在类加载过程中的解析过程实现的