class字节码结构(二)(访问标志、类索引、父类索引、接口索引集合)
《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合
字节码总体结构:

访问标志(access_flags)能够表示什么?
访问标志(access_flags)紧接着常量池后,占有两个字节,总共16位,如下图所示:

存放的是这个类或者接口的访问标志信息:是否具有某种标准用1标识。

类或者接口(包括内部类,静态内部类)都会单独生成一个class文件。
ACC_SUPER标志位:表示这个class是否是类。
ACC_INTERFACE标志位:表示这个class是否是接口。
ACC_PUBLIC标志符:接口或者类是否是public
ACC_ABSTRACT标志位:是否是抽象类(不过接口也会被认为是抽象类)
ACC_FINAL标志位:是否是final(是否可以被继承)
ACC_SYNTHETIC标志位:字节码是否通过源码生成(0是源码,1是手写的字节码)
ACC_ENUM标志位:class是否是枚举类型
ACC_ANNOTATION标志位:class是否是注解。
一个例子:
package com.louis.jvm;
public class Simple {
}
用javap -v Simple > temp.txt,将结果重定向到文件中

对应的2精制效果:

上面都是采用十六精制表示的。
类索引(this_class)是什么?
类索引的作用,就是为了指出class文件所描述的这个类叫什么名字。


通过索引指向常量项,那个类对应的索引常量项。
父类索引(super_class)是什么?
父类索引这两个字节中的值指向了常量池中的某个常量池项CONSTANT_Class_info,表示该class表示的类是继承自哪一个类。

接口索引集合(interfaces)是什么?
一个类可能有多个接口,所以是接口的集合。

因为接口数目不确定,所以接口索引集合前部分有个接口计数器。
集合中的每个索引都指向接口的名字的索引常量项。
例子如下:
public interface Worker{
public void work();
}
package com.louis.jvm;
public class Programmer implements Worker {
@Override
public void work() {
System.out.println("I'm Programmer,Just coding....");
} }

class字节码结构(二)(访问标志、类索引、父类索引、接口索引集合)的更多相关文章
- class字节码结构(零:补充:class结构,常量池,字节码指令)
JVM高级特性与实践(五):实例探究Class类文件 及 常量池 JVM高级特性与实践(六):Class类文件的结构(访问标志,索引.字段表.方法表.属性表集合) JVM高级特性与实践(七):九大类字 ...
- class字节码结构(四)(方法集合的结构)
<Java虚拟机原理图解>1.5. class文件中的方法表集合--method方法在class文件中是怎样组织的 一个类有多个方法,所以方法肯定是一个集合. 目标是: 1,了解方法在字节 ...
- class字节码结构(一)(字节码结构和字节常量池的结构)
<Java虚拟机原理图解> 1.1.class文件基本组织结构 关于变量的几个叫法: 局部变量/全局变量:很好区分根据所在位置. 类变量:静态的全局变量. 类常量:全局的final修饰的变 ...
- JVM 字节码(二)方法表详解
JVM 字节码(二)方法表和属性表 上一节中对 ClassFile 的整体进行了五个详细的说明, 本节围绕 ClassFile 最重要的一个内容 - 方法表的 Code 属性展开 ,更多 JVM Me ...
- java动态代理——jvm指令集基本概念和方法字节码结构的进一步探究及proxy源码分析四
前文地址 https://www.cnblogs.com/tera/p/13336627.html 本系列文章主要是博主在学习spring aop的过程中了解到其使用了java动态代理,本着究根问底的 ...
- class字节码结构(三)(字段集合的结构)
<Java虚拟机原理图解>1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的 字段区:包括了字段计数器和字段数据区: 字段是指在类中定义的静态或者非静态的 ...
- JVM Class字节码之三-使用BCEL改变类属性
使用BCEL动态改变Class内容 之前对Class文件中的常量池,Method的字节码指令进行了说明.JVM Class详解之一JVM Class详解之二 Method字节码指令现在我们开始实际动手 ...
- 字节码层面深入分析Java枚举类
枚举类的使用 定义一个简单的枚举类,其中包含若干枚举常量,示例如下: public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FR ...
- VS反编译查看源码时,会把类实现的所有接口都直接显示
今天在看ArrayList,发现一个很有意思的问题.从VS里反编译看,ArrayList继承了ICollection. IEnumerable.IList和ICloneable,而IList又继承了I ...
随机推荐
- Laravel + Vue 之 OPTIONS 请求的处理
问题: 在 Vue 对后台的请求中,一般采用 axios 对后台进行 Ajax 交互. 交互发生时,axios 一般会发起两次请求,一次为 Options 试探请求,一次为正式请求. 由此带来的问题是 ...
- 1. Install Git and GitExtension
Install Git Step 1: Run
- 编写JavaScript 代码的5个小技巧
1.Array.includes 与条件判断 一般我们判断或用 || // condition function test(fruit) { if (fruit == "apple" ...
- 修改python ide的主题,颜色
1.找到这个名叫config-highlight.cfg文件后接下来就需要编辑它了 2. 贴上: [Obsidian] definition-foreground = #678CB1 error-fo ...
- 破解Unity5.3.4f1
破解的目的是将受限的个人版变为全功能的Pro版,破解后就可以使用所有功能了,界面也变成了黑色的主题. 破解网址(支持最新版的5.3.4f1): http://www.ceeger.com/forum/ ...
- UVa 10269 Adventure of Super Mario (Floyd + DP + BFS)
题意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径.但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄.这种工具有k个,每个只能使用一次,并且在城市内部不可使用,但在 ...
- UESTC 486 Good Morning (水题+坑!)
题意:给你一行字符串,让你找其中蕴含的“good morning"的次数. 析:看起来很水么,多简单,只有统计一下其中字母的出现的次数,然后除以相应的个数. 但是很不幸的是WA,而且是在te ...
- 一种基于Redis的10行代码实现IP频率控制方法
优点:可支持海量访问的频率控制,只需要增加Redis机器,单个Redis节点(只占用一个cpu core)即可支持10万/s以上的处理. 基于IP频率限制是种常见需求,基于Redis可以十分简单实现对 ...
- MapGIS Mobile开发
1. 先将Android开发环境配置好(包括Java + Eclipse + Android SDK) 2. 加载API类库(运行MapGIS 10 AndroidSDK.exe可以加载Mobile框 ...
- 软件工程作业 - 实现WC功能(java)
项目地址:https://github.com/yogurt1998/WordCount 要求 基本要求 -c 统计文件字符数(实现) -w 统计文件单词数(实现) -l 统计文件行数(实现) 扩展功 ...