6.Class文件中的访问标识以及类索引、父类索引、接口索引集合
日期: 2020-12-14 分类: 跨站数据 546次阅读
1.访问标识(access_flag
)
- 在常量池之后,紧跟着的
两个字节
就是访问标识,用于识别一些关于接口和类的信息。例如,这个Class
是类还是接口,是不是public
类型,是不是abstract
类型,如果是类的话,是否被声明为final
。具体的信息可以参考下图中的表格。 - 标志名称通常以
ACC_
开头 - 每一种标记都是通过设置访问标记的32位中特定位来实现的。多个访问标识,通过取或操作得到最终的值。
- 只要是一个类,
ACC_SUPER
这个标志,就会默认给加上。
补充说明(了解):
2.类索引、父类索引、接口索引集合
- 在访问标记之后,紧跟着的就是类索引、父类索引以及接口索引集合。
- 类索引和父类索引分别占两个字节,接口索引是一个集合,因为接口存在多实现以及多继承(接口与接口),但是类不存在多继承。
- 类索引用于确定该类的全限定名;父类索引用于确定该类的父类的全限定名(父类索引只有一个,因为
java
不允许多继承,因为所有的类都继承自Object
类,所以除了Object
类之外,所有的类都有一个父类索引);接口索引集合用于确定这个类实现了哪些接口。
2.1 类索引
- 占两个字节,是指向常量池的索引。
this_class
的值是对常量池表中某一项的有效索引值。例如类索引的值为2
,指向的是常量池表中的第2
项。
2.2 父类索引、接口索引集合
- 父类索引占两个字节,也是指向常量池的索引。
this_class
的值是对常量池表中某一项的有效索引值,例如父类索引的值为3
,指向的是常量池表中的第3
项。 - 接口索引集合包含两个部分:
a)interfaces_count
(接口计数器)- 类实现了多少个接口
b)interfaces[]
(接口索引集合) - 接口索引集合,每一项interface[]
的值是指向常量池的索引。比如说如果interface[1] = 4
,说明指向的是常量池表中索引为4
的项。
更多JVM文章请访问我的JVM专栏:
https://blog.csdn.net/u011069294/category_10113093.html
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐