模块 java.base

枚举类枚举类 AccessFlag

java.lang.Object
java.lang.Enum <AccessFlag >
java.lang.reflect.AccessFlag
所有已实现的接口:
Serializable , Comparable<AccessFlag> , Constable

public enum AccessFlag extends Enum <AccessFlag >
表示运行时成员上的 JVM 访问或模块相关标志,例如 fieldmethod

JVM 访问和模块相关标志与 Java 语言 modifiers 相关但不同。一些修饰符和访问标志具有一一对应关系,例如 public 。在其他情况下,某些语言级别的修饰符确实 not 具有访问标志,例如 sealed (JVMS 4.7.31 ),而某些访问标志没有相应的修饰符,例如 合成的

表示访问和模块标志的常量值取自Java 虚拟机规范包括4.1(类访问和属性修饰符)、4.5(字段访问和属性标志)、4.6(方法访问和属性标志)、4.7.6(嵌套类访问和属性标志)、4.7.24(方法参数)和4.7.25(模块标志和需要、导出和打开标志)。

不同访问标志的 mask 值是 not 不同的。标志是为不同类型的 JVM 结构定义的,相同的位位置在不同的上下文中具有不同的含义。例如,0x0000_0040 表示 volatile 字段,但 桥接法0x0000_0080 表示 transient 字段但 可变元数 (varargs) 方法。

API 注意:
JVM 类文件格式为每个新的 功能发布 定义了一个 新版本。新的类文件版本可以定义新的访问标志或淘汰旧的。 AccessFlag 旨在对跨类文件格式版本的访问标志集进行建模。此 API 中未明确指示可识别访问标志的版本范围。查看当前Java 虚拟机规范了解详情。除非另有说明,否则可以假定访问标志在 当前版本 中被识别。
实现要求:
访问标志常量按非递减掩码值排序;即常量的掩码值大于或等于其(句法)左侧的直接邻居的掩码值。如果添加了新常量,该属性将保持不变。这意味着新常量不一定会添加到现有列表的末尾。
自从:
20
参见:
  • 枚举常量详细信息

  • 方法详情

    • values

      public static AccessFlag [] values()
      返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。
      返回:
      包含此枚举类常量的数组,按照它们声明的顺序排列
    • valueOf

      public static AccessFlag  valueOf(String  name)
      返回具有指定名称的此类的枚举常量。字符串必须匹配确切地用于在此类中声明枚举常量的标识符。 (不允许使用无关的空白字符。)
      参数:
      name - 要返回的枚举常量的名称。
      返回:
      具有指定名称的枚举常量
      抛出:
      IllegalArgumentException - 如果此枚举类没有具有指定名称的常量
      NullPointerException - 如果参数为空
    • mask

      public int mask()
      返回访问标志对应的整数掩码。
      返回:
      访问标志对应的整数掩码
    • sourceModifier

      public boolean sourceModifier()
      返回标志在 Java 编程语言中是否具有直接对应的修饰符。
      返回:
      该标志在 Java 编程语言中是否有直接对应的修饰符
    • locations

      public Set <AccessFlag.Location > locations()
      返回在最新的类文件格式版本中可以应用标志的构造种类。
      返回:
      在最新的类文件格式版本中可以应用标志的构造种类
    • locations

      public Set <AccessFlag.Location > locations(ClassFileFormatVersion  cffv)
      返回在给定的类文件格式版本中可以应用标志的构造类型。
      参数:
      cffv - 要使用的类文件格式版本
      返回:
      在给定的类文件格式版本中可以应用标志的构造种类
      抛出:
      NullPointerException - 如果参数是 null
    • maskToAccessFlags

      public static Set <AccessFlag > maskToAccessFlags(int mask, AccessFlag.Location  location)
      为适用于相关位置的给定掩码值返回一组不可修改的访问标志。
      参数:
      mask - 访问标志的位掩码
      location - 解释掩码值的上下文
      返回:
      适用于所讨论位置的给定掩码值的一组不可修改的访问标志
      抛出:
      IllegalArgumentException - 如果掩码包含不支持相关位置的位位置