笔记-Java基础Class文件之类索引,父类索引与接口索引

8 篇文章 0 订阅
6 篇文章 0 订阅

  类索引(this_class)和父类索引(super_class)都是一个u2类型的数据,而接口索引集合(interfaces)是一组u2类型的数据的集合,class文件中由这三项数据来确定这个类的继承关系。类索引用用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名。由于Java语言不孕育多重继承,所以父父类索引只有一个,除了java.lang.Object之外,所有的Java类都有父类,因此除了java.lang.Object外,所有Java类的父类索引都不为0.接口索引集合就用来描述这个类实现了哪些接口,这些被实现的接口将安implement语句(如果这个类本身是一个接口,则应当是extends语句)后的接口顺序从左到右排列在接口索引集合中。

  类索引,父类索引和接口索引集合都按顺序排列在访问标志之后,类索引和父类索引引用两个u2类型的索引值表示,它们各自指向一个类型为CONSTANT_Class_info的类描述符常量,通过CONSTANT_Class_info类型的常量中的索引值可以找到定义在CONSTANT_Utf8_info类型的常量中的全限定名字符串。如下图所示展示了类索引查找过程。

  从偏移地址0x000000F1开始的3个u2类型的值分别为0x0001,0x0003,0x0000,也就是类索引为1,父类索引为3,接口索引集合大小为0,查询前面代码清单中javap命令计算出来的常量池,找出对应的类和父类的常量,结果如代码下表所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值