Class文件:
access_flags:
access_flags为两个字节,紧跟常量池,展示了文件中定义的类或接口的几段信息。
access_flags中所有未使用的位都必须有编译器置0,而且java虚拟机必须忽略它。
this_class:
两个字节,他是一个对常量池的索引。this_class位置的常量池入口必须为CONSTANT_Class_info标。该表由两部分组成:一个标签和name_index。
标签:一个具有CONSTANT_Class值的常量,name_index位置的常量池入口为一个包含了类或接口权限定名的CONSTANT_Utf8_info表。
this_class指示一个指向常量池的索引。
super_class:
两个字节的常量池索引:一个指向该类超类全限定名的CONSTANT_Class_info入口。
对于Object类,super_class的值为0,对于接口,常量池入口super_class位置的项为java.lang.Object。
interfaces_count、interfaces
在文件中由该类直接实现或者由该接口所扩展的父接口的数量。这个技术后面,是名为interfaces的数组,包含了对每个由该类或者接口直接实现的父接口的常量池索引。
超类按照在implements子句和extends子句汇总出现的顺序(从左到右)在这个数据中显现。
fields_count、fields
首先是名为fields_count的计数,它是类变量和实例变量的字段的数量总和。
在fields列表中,不列出超类或者父接口继承而来的字段。
每个field_info表都展示一个字段的信息,如果该字段被声明为final,field_info表还会展示其常量值。
methods_count和methods
首先是名为methods_count的计数。双字节,对该类或者接口中声明的所有方法的总计数,从超类或者父接口汇总继承的方法不被计入。
attributes_count、attributes
给出了该文件中类或者接口所定义的属性的基本信息。每个attribute_info的第一项是指向常量池中CONSTANT_Utf8_info表的索引。
特殊字符串:
常量池中容纳的符号引用包括三种特殊的字符串:权限定名、简单名称、描述符。
所有的符号引用都包括类或者接口的全限定名。
分享到:
相关推荐
7. **JVM**:Java虚拟机是Java程序的运行环境,理解其内存模型、类加载机制和垃圾回收原理有助于优化代码性能。 8. **Spring框架**:作为Java企业级应用的主流框架,Spring涵盖了依赖注入、AOP(面向切面编程)、...
为了实现这一点,JAVA定义了一套自己的运行时环境,即JVM(JAVA虚拟机),它可以将JAVA代码转换为对应平台上的机器码,从而使JAVA程序能够在不同平台之间无缝迁移。此外,JAVA在企业级应用开发、移动应用开发、大...
本文总结了 Java 程序员面试中常见的知识点和经验总结,涵盖了 Java 基础、多线程、IO 与 NIO、虚拟机、设计模式、数据结构与算法、计算机网络、操作系统、主流框架、数据存储、分布式系统等方面的知识点。...
Clojure是一种静态类型的函数式编程语言,它运行在Java虚拟机(JVM)上,同时也支持JavaScript和其他平台。ClojureClojure是Clojure社区的简称,代表使用Clojure进行开发的项目和开发者群体。 蒙古包(Yurt)的命名...