网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

本篇文章为大家展示了JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联公司2013年成立,先为皋兰等服务建站,皋兰等地企业,进行企业商务咨询服务。为皋兰企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

一、概述

前面介绍了class文件,包括魔数、次版本号、主版本号、常量池和访问标志.接下来的就是用于确定这个类的继承关系的类索引(thisclass)、父类索引(superclass)与接口索引集合(interfaces)这三项。

类索引、父类索引和接口索引集合都按顺序排列在访问标志之后,类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名。由于Java语言不允许多继承,因此父类索引只有一个,除了java.lang.Object之外,所有的Java类都有父类,因此除了Object外,所有Java类的父类索引都不为0。

二、详细描述

类索引和父类索引均是u2类型的数据,它们各自指向一个类型为CONSTANTClassinfo类型的常量,通过CONSTANTClassinfo类型的常量中的索引值可以找到定义在CONSTATNUtf8info类型的常量中的全限定名字符串。

接口索引集合用来描述这个类实现了哪些接口,它是一组u2类型的数据的集合,集合中的第一项是接口计数器,表示索引表的容量。如果一个类没有实现任何接口,则该计数器值为0。

索引位置参见下图:

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

三、案例分析

新建接口:

public interface HelloWord {}

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

这里类索引值是0x0001,也就是指向常量池中的第一项,通过查找常量池可知这个类的全限定名是com/csdn/reader/HelloWord。

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

类索引后的两个字节就是父类索引,同上可查找到父类索引为0x0002,对应于常量池中的第二项:

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

由于类实现的接口数目不确定,所以接口索引集合的描述的前部分叫做接口计数器(interfaces_count),接口计数器占用两个字节,其中的值表示着这个类实现了多少个接口,紧跟着接口计数器的部分就是接口索引部分了,每一个接口索引占有两个字节,接口计数器的值代表着后面跟着的接口索引的个数。

com.csdn.reader.HelloWord类没有实现任何接口,接口索引值为0。

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

来个复杂一点的:

public interface HelloWord extends StringBuilderFormattable, Serializable {}

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

通过javap来进行分析:

JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么

上述内容就是JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


本文标题:JVM虚拟机中Class文件的类索引、父类索引和接口索引集合是什么
文章地址:http://bjjierui.cn/article/jhjjhe.html

其他资讯