JVM虚拟机-Class文件之访问标志

简介: JVM虚拟机-Class文件之访问标志

 一、访问标志的概念

常量池结束之后,紧接着的两个字节代表访问标志,这个标志用于识别一些类或者接口层次的访问信息,包括:这个Class是接口还是类;是否被定义为public类型;是否定义为abstract类型;如果是类的话,是否被声明为final等。

access_flages中共有两个字节(16位)可以使用,没有使用到的标志为要求一律为0。如果有多个访问标志,那通过“OR”的方式组合在一起。

二、访问标志具体含义

标志名称  标志值 含义
ACC_PUBLIC 0x00 01 是否为Public类型
ACC_FINAL 0x00 10 是否被声明为final,只有类可以设置
ACC_SUPER 0x00 20 是否允许使用invokespecial字节码指令的新语义.
ACC_INTERFACE 0x02 00 标志这是一个接口
ACC_ABSTRACT 0x04 00 是否为abstract类型,对于接口或者抽象类来说,次标志值为真,其他类型为假
ACC_SYNTHETIC 0x10 00 标志这个类并非由用户代码产生
ACC_ANNOTATION 0x20 00 标志这是一个注解                                                                             
ACC_ENUM            0x40 00 标志这是一个枚举

三、实例分析

案例一

定义一个类:

public class HelloWord {
}

image.gif

image.gif编辑

00 21可以推断是由ACC_PUBLIC和ACC_SUPER通过OR组合而成。

通过命令javap -verbose  HelloWord.class来查看,发现确实是 ACC_PUBLIC, ACC_SUPER组合而成:

image.gif编辑

案例二

定义一个接口:

public interface HelloWord {
}

image.gif

image.gif编辑

06 01又是怎么组合的呢?通过命令javap -verbose  HelloWord.class来查看,发现是 ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT组合而成:

image.gif编辑

参考资料:

    1. Class文件详解_IT_GJW的博客-CSDN博客_class文件是什么
    2. class文件访问标志 - 炎泽 - 博客园
    相关文章
    |
    13天前
    |
    安全 Java
    对 JVM 的类加载机制以及寻找字节码文件的“双亲委派模型”的理解
    对 JVM 的类加载机制以及寻找字节码文件的“双亲委派模型”的理解
    13 0
    |
    1天前
    |
    存储 Java 开发者
    深入理解Java虚拟机:JVM内存模型解析
    【5月更文挑战第27天】 在Java程序的运行过程中,JVM(Java Virtual Machine)扮演着至关重要的角色。作为Java语言的核心执行环境,JVM不仅负责代码的执行,还管理着程序运行时的内存分配与回收。本文将深入探讨JVM的内存模型,包括其结构、各部分的作用以及它们之间的相互关系。通过对JVM内存模型的剖析,我们能够更好地理解Java程序的性能特征,并针对性地进行调优,从而提升应用的执行效率和稳定性。
    |
    1天前
    |
    Java 索引
    【JVM】字节码文件的组成部分
    【JVM】字节码文件的组成部分
    10 1
    |
    1天前
    |
    Oracle Cloud Native Java
    【JVM】初步认识Java虚拟机
    【JVM】初步认识Java虚拟机
    15 6
    |
    4天前
    |
    存储 算法 Java
    深入解析Java虚拟机(JVM):技术原理与性能优化
    深入解析Java虚拟机(JVM):技术原理与性能优化
    19 1
    |
    13天前
    |
    运维 监控 数据可视化
    【JVM】JVM 虚拟机重点解析(下)
    【JVM】JVM 虚拟机重点解析
    33 0
    |
    13天前
    |
    存储 算法 Java
    【JVM】JVM 虚拟机重点解析(上)
    【JVM】JVM 虚拟机重点解析
    47 0
    |
    13天前
    |
    存储 前端开发 Java
    深入浅出JVM(四)之类文件结构
    深入浅出JVM(四)之类文件结构
    深入浅出JVM(四)之类文件结构
    |
    13天前
    |
    存储 缓存 安全
    深入浅出JVM(三)之HotSpot虚拟机类加载机制
    深入浅出JVM(三)之HotSpot虚拟机类加载机制
    |
    13天前
    |
    存储 缓存 算法
    深入浅出JVM(一)之Hotspot虚拟机中的对象
    深入浅出JVM(一)之Hotspot虚拟机中的对象