JAVA字节码文件之第三篇(访问标识)
一、Access Flags 访问标志
访问标志信息包括该 Class 文件是类还是接口,是否被定义成 public 或者 abstract , 如果是类,是否被声明成 final。
访问标志表
二、Access Flags 的分析
通过上一篇JAVA字节码文件之第二篇(常量池)的分析可知该class文件的常量池结束部分在 63 74的位置
Access Flags 占2个字节,所以该字节码文件的访问标志是00 21,0x0021在 Access Flags 中是0x0020和0x0001的并集,表示 ACC PUBLIC与 ACC SUPER合并的结果。说明该类的声明修饰是public并且继承Object
三、This Class Name 的分析
This Class Name 占 Access Flags之后的两个字节所以是00 03。索引等于3,对应常量池中的#22 ,就是当前类的名称
四、Super class Name 的分析
Super class Name占 this Class Name 之后的两个字节所以是 00 04。索引等于4,对应常量池中的#4,就是当前类的父类
五、Interface 的分析
Interface 占Super class Name 之后的 2+n个byte,前两个byte是接口的数量,之后的n个byte表示接口的具体信息。
由于 Interface num=00 00 ;所以该类没有实现任何接口,也就是没有索引与常量池进行匹配。
六、Fields 的分析
Fields的范围:字段表用于描述类和接口中声明的变量。这里的字段包含了类级别变量(静态变量)以及实例变量,但是不包括方法内部声明的局部变量
属性表集合:
Fields 占 Interface 之后的2+n个byte,前两个byte是Fields 的数量,之后的n个byte表示Fields的具体信息。
由于 Fields num= 00 01;所以该类具有一个成员变量。
u2 access_flags :00 02 ,访问标识的是0002,ACC_PRIVATE
u2 name_index: 00 05,名字的索引是5,对应常量池的#5
u2 descriptor_index :00 06,描述符的索引是6,对应常量池的#6 ,所以变量的类型是int
u2 attributes_count:00 00 ,扩展属性为0,所以该变量没有扩展属性,所以就不存在 attribute_info
attribute_info attributes[attributes_count];
0x0021:
最新文章
- 《微软互联网信息服务(IIS) 最佳实践》已上市,欢迎选购!
- Ubuntu Desktop 15.10 自带桌面共享问题修复
- Javascript高级程序设计——BOM(浏览器对象模型)
- C# 修改IE 源代码参照样例
- GRID控件删除之前确认
- <;meta 标签的详细使用
- Linux下软件的安装
- 【css基础】文本对齐,水平对齐,垂直对齐
- JavaScript的DOM编程--10--删除节点
- jquery的$.extend和$.fn.extend作用及区别/用span实现进度条/腾讯云IIS端口号修改
- OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Redis使用
- Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析
- 2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)
- 【资料下载区】【iCore1S相关代码、资料下载地址】更新日期2017/10/09
- [20180626]函数与标量子查询14.txt
- dataGridView使用指南系列一、回车换行或换列完美解决方案
- 网络基础之IP地址和子网掩码
- Linux的常用基础命令
- Spark: Best practice for retrieving big data from RDD to local machine
- JAXB--@XmlElementWrapper注解(二)
热门文章
- laravel 定时任务通过队列发送邮件
- sublime text 3创建新文件插件-AdvanceNewFile
- 基于Mysql实现分布式锁
- Fragment学习(一) :生命周期
- Python--day67--CBV和FBV、Request对象及上传文件示例
- pytorch入坑一 | Tensor及其基本操作
- java 创建线程方式
- Python 科学计算库numpy
- laydate type=time/datetime/date 开始时间和结束时间的输入限制
- MySQL之Field‘***’doesn’t have a default value错误解决办法