Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据

6.Class文件中的访问标识以及类索引、父类索引、接口索引集合

1.访问标识(access_flag

  1. 在常量池之后,紧跟着的两个字节就是访问标识,用于识别一些关于接口和类的信息。例如,这个Class是类还是接口,是不是public类型,是不是abstract类型,如果是类的话,是否被声明为final。具体的信息可以参考下图中的表格。
  2. 标志名称通常以ACC_开头
  3. 每一种标记都是通过设置访问标记的32位中特定位来实现的。多个访问标识,通过取或操作得到最终的值。
  4. 只要是一个类,ACC_SUPER这个标志,就会默认给加上。
    在这里插入图片描述
    补充说明(了解):
    在这里插入图片描述

2.类索引、父类索引、接口索引集合

  1. 在访问标记之后,紧跟着的就是类索引、父类索引以及接口索引集合。
  2. 类索引和父类索引分别占两个字节,接口索引是一个集合,因为接口存在多实现以及多继承(接口与接口),但是类不存在多继承。
  3. 类索引用于确定该类的全限定名;父类索引用于确定该类的父类的全限定名(父类索引只有一个,因为java不允许多继承,因为所有的类都继承自Object类,所以除了Object类之外,所有的类都有一个父类索引);接口索引集合用于确定这个类实现了哪些接口。
    在这里插入图片描述

2.1 类索引

  1. 占两个字节,是指向常量池的索引。this_class的值是对常量池表中某一项的有效索引值。例如类索引的值为2,指向的是常量池表中的第2项。
    在这里插入图片描述

2.2 父类索引、接口索引集合

  1. 父类索引占两个字节,也是指向常量池的索引。this_class的值是对常量池表中某一项的有效索引值,例如父类索引的值为3,指向的是常量池表中的第3项。
  2. 接口索引集合包含两个部分:
    a)interfaces_count(接口计数器)- 类实现了多少个接口
    b)interfaces[] (接口索引集合) - 接口索引集合,每一项interface[]的值是指向常量池的索引。比如说如果interface[1] = 4,说明指向的是常量池表中索引为4的项。
    在这里插入图片描述
    更多JVM文章请访问我的JVM专栏:
    https://blog.csdn.net/u011069294/category_10113093.html

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: Java静态方法和非静态方法

下一篇: 初学设计模式(java版)六:创建型模式之--Prototype(原型模式)

精华推荐