JVM-class文件完全解析-类索引,父类索引和索引集合
类索引,父类索引和接口索引集合
前面介绍了class文件,从头开始的魔数,次版本号,主版本号,常量池入口,常量池,访问标志.那么再接下来的就是用来确定这个类的继承关系的类索引,父类索引和接口索引集合这三项了.
下面就来认识一下这三项内容.
类索引(this_class)和父类索引(super_class)都是一个u2类型的数据,而接口索引集合(interfaces)是一组u2类型的数据的集合,class文件中由这三项数据来确定这个类的继承关系.
类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名.接口索引集合用来描述这个类实现了哪些接口,这些被实现的接口按implements语句后的接口顺序从左到右排列在接口索引集合中.
类索引,父类索引和接口都按顺序排列在访问标志之后,类索引和父类索引用两个u2类型的索引值表示,它们各自指向一个类型为CONSTANT_Class_info的类描述常量,通过CONCTANT_Class_info类型的常量中的索引值可以找到定义在CONSTANT_Class_info类型的常量中的全限定名字符串.
对接口索引集合,入口的第一项u2类型的数据为接口计数器(interface_count)表示索引表的容量.如果该类没有实现任何接口,则该计数器值为0,后面接口的索引表不再占用任何字节.
下面我们继续前面分析的class文件,继续往下走,分析上面这三项内容:
class文件及分析:
那么现在我们拿这几个值和我们介绍常量池的时候用javap工具分析的常量池的时候查看的常量池的内容,验证一下是否正确.
因为0x00 03 和0x00 04十六进制对应与十进制的3和4,所以类索引和父类索引就对应第三和第四个常量池.从上图看第三和第四个常量池分别对应TestClass和Object两个类,再看一下源代码,就知道结果是正确的.(因为我的类名就是TestClass,没有显示继承任何类,就是默认继承了Object父类)
源代码:
转载于:https://www.cnblogs.com/lrh-xl/p/5346516.html
JVM-class文件完全解析-类索引,父类索引和索引集合相关推荐
- INI文件快速解析java工具包
FastIni 概述 相信大家都用过阿里的fastjson,它可以通过模板快速解析json字符串,也可以通过key快速获取json字符串中的值.通过模板类型快速解析json字符串是一个很好的想法,所以 ...
- Jvm之用java解析class文件
前言: 身为一个java程序员,怎么能不了解JVM呢,倘若想学习JVM,那就又必须要了解Class文件,Class之于虚拟机,就如鱼之于水,虚拟机因为Class而有了生命.<深入理解java虚拟 ...
- JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)
JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...
- jvm中篇-04-Javap指令解析class文件
jvm中篇-04-Javap指令解析class文件 解析字节码的作用 javac -g 操作 javap 的具体用法 使用举例 小结 234-237 解析字节码的作用 通过反编译生成的字节码文件,我们 ...
- Class文件结构介绍[访问标志,类索引,父类索引,接口索引集合]
访问标志 在常量池结束后,紧接着的两个字节代表访问标志(access_flags),这个标志用于识别一些类或者接口层次的访问信息,包括:这个Class是类还是接口,是否定义为public类型,是否 ...
- 歌词文件lrc的解析类(目前在WINCE下使用)
用到歌词显示就写了一个歌词解析类,与大家共同分享. 贴出头文件: /****************************************************************** ...
- dom4j工具类_基于DOM4J的XML文件解析类
XML文件解析分四类方式:DOM解析:SAX解析:JDOM解析:DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于ja ...
- 最全的基于c++的serialport.cpp与serialport.h类文件(解析版)
最全的基于c++的serialport.cpp与serialport.h类文件(解析版) 备注 参考原文件为:serialport.cpp与serialport.h类文件源代码 作者:c344935 ...
- C#怎样解析.CSV文件同时把类转换成JSON
1.首先需要引用 Newtonsoft.Json 目的是为了把对象类直接转换为JSON,返回到前台 using Newtonsoft.Json; 2.定义一个类,存储返回的值 public class ...
- 一个CUE文件解析类
网络上的APE文件通常附带一个CUE文件,该文件包含了此CD碟片的作者,曲目等信息,要能支持对APE文件的选曲以及必要信息的显示,必须实现CUE文件的解析.这是实现初步功能的CUE文件解析类,还有待完 ...
最新文章
- python 一张图画多条线_Gnuplot.py在一张图上绘制多条线
- db2联邦数据库 linux,DB2创建联邦数据库
- 查找xml文件中某接点的值
- Objc基础学习记录5
- Perl 中级教程 第5章课后习题
- 送货只服京东“特快送”:航空快件可送达近300个城市
- 很多创业失败的负债者
- 【总结】大规模数据(300万条)测试时,需要注意的问题。
- 公司招聘asp.net 工程师
- 基于树莓派的车牌识别门禁系统(工作日记)
- wepe重装win10用U盘安装系统
- AI改变现代商业的25种方式
- 零基础学前端系列教程 | 和前端谈恋爱的第004天——打扮漂亮
- 教你分析快递揽收后,第二条物流是否超过12小时
- Tensorflow2训练Fer2013数据集
- 微信公众号文章爬取方法整理
- 心知天气API如何调用与json数据如何显示
- InfluxDB学习整理
- Unit Test Harness(用具)应该具备什么功能?
- linux emule 编译 wx-config --libs,如何编译 eMule v0.46b