Module java.base

Enum Class AccessFlag

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

public enum AccessFlag extends Enum<AccessFlag>
表示JVM访问或模块相关标志在运行时成员上的标志,例如一个字段方法

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

表示访问和模块标志的常量的值取自Java虚拟机规范的各个部分,包括4.1(类访问和属性修饰符),4.5(字段访问和属性标志),4.6(方法访问和属性标志),4.7.6(嵌套类访问和属性标志),4.7.24(方法参数)和4.7.25(模块标志和requires,exports和opens标志)。

不同访问标志的掩码值并不是不同的。标志被定义为不同种类的JVM结构,同一位位置在不同上下文中具有不同的含义。例如,0x0000_0040表示一个volatile字段,但是一个桥接方法0x0000_0080表示一个transient字段,但是一个可变参数(varargs)方法。

API注释:
JVM类文件格式为每个新的特性发布定义了一个新版本。新的类文件版本可能定义新的访问标志或废弃旧的标志。 AccessFlag旨在模拟跨类文件格式版本的访问标志集。访问标志被识别的版本范围在此API中没有明确指示。有关详细信息,请参阅当前的Java虚拟机规范。除非另有说明,可以假定访问标志在当前版本中被识别。
实现要求:
访问标志常量按非递减的掩码值排序;即常量的掩码值大于或等于其(语法上的)左侧相邻常量的掩码值。如果添加新的常量,将保持此属性。这意味着新的常量不一定会添加到现有列表的末尾。
自:
20
参见:
  • Enum Constant Details

    • PUBLIC

      public static final AccessFlag PUBLIC
      访问标志ACC_PUBLIC,对应于源修饰符public,掩码值为0x0001
    • PRIVATE

      public static final AccessFlag PRIVATE
      访问标志ACC_PRIVATE,对应于源修饰符private,掩码值为0x0002
    • PROTECTED

      public static final AccessFlag PROTECTED
      访问标志ACC_PROTECTED,对应于源修饰符protected,掩码值为0x0004
    • STATIC

      public static final AccessFlag STATIC
      访问标志ACC_STATIC,对应于源修饰符static,掩码值为0x0008
    • FINAL

      public static final AccessFlag FINAL
      访问标志ACC_FINAL,对应于源修饰符final,掩码值为0x0010
    • SUPER

      public static final AccessFlag SUPER
      访问标志ACC_SUPER,掩码值为 0x0020
      API注释:
      在Java SE 8及以上版本中,JVM将ACC_SUPER标志视为在每个类文件中设置(JVMS 4.1)。
    • OPEN

      public static final AccessFlag OPEN
      模块标志ACC_OPEN,掩码值为 0x0020
      参见:
    • TRANSITIVE

      public static final AccessFlag TRANSITIVE
      该模块需要使用标志 ACC_TRANSITIVE,其掩码值为 0x0020
      参见:
    • SYNCHRONIZED

      public static final AccessFlag SYNCHRONIZED
      与源代码修饰符 synchronized 对应的访问标志 ACC_SYNCHRONIZED,其掩码值为 0x0020
    • STATIC_PHASE

      public static final AccessFlag STATIC_PHASE
      该模块需要使用标志 ACC_STATIC_PHASE,其掩码值为 0x0040
      参见:
    • VOLATILE

      public static final AccessFlag VOLATILE
      与源代码修饰符 volatile 对应的访问标志 ACC_VOLATILE,其掩码值为 0x0040
    • BRIDGE

      public static final AccessFlag BRIDGE
      访问标志 ACC_BRIDGE,其掩码值为 0x0040
      参见:
    • TRANSIENT

      public static final AccessFlag TRANSIENT
      与源代码修饰符 transient 对应的访问标志 ACC_TRANSIENT,其掩码值为 0x0080
    • VARARGS

      public static final AccessFlag VARARGS
      访问标志 ACC_VARARGS,其掩码值为 0x0080
      参见:
    • NATIVE

      public static final AccessFlag NATIVE
      与源代码修饰符 native 对应的访问标志 ACC_NATIVE,其掩码值为 0x0100
    • INTERFACE

      public static final AccessFlag INTERFACE
      访问标志 ACC_INTERFACE,其掩码值为 0x0200
      参见:
    • ABSTRACT

      public static final AccessFlag ABSTRACT
      与源代码修饰符 abstract 对应的访问标志 ACC_ABSTRACT,其掩码值为 0x0400
    • STRICT

      public static final AccessFlag STRICT
      与源代码修饰符 strictfp 对应的访问标志 ACC_STRICT,其掩码值为 0x0800
      API 注意:
      ACC_STRICT 访问标志适用于类文件主版本46至60(包括)(JVMS 4.6),对应于 Java SE 1.2 到 16。
    • SYNTHETIC

      public static final AccessFlag SYNTHETIC
      访问标志 ACC_SYNTHETIC,其掩码值为 0x1000
      参见:
    • ANNOTATION

      public static final AccessFlag ANNOTATION
      访问标志 ACC_ANNOTATION,其掩码值为 0x2000
      参见:
    • ENUM

      public static final AccessFlag ENUM
      访问标志 ACC_ENUM,其掩码值为 0x4000
      参见:
    • MANDATED

      public static final AccessFlag MANDATED
      访问标志 ACC_MANDATED,其掩码值为 0x8000
    • MODULE

      public static final AccessFlag MODULE
      访问标志 ACC_MODULE,其掩码值为 0x8000
  • Method Details

    • values

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

      public static AccessFlag valueOf(String name)
      返回具有指定名称的此类的枚举常量。字符串必须与此类中用于声明枚举常量的标识符完全匹配。(不允许存在多余的空白字符。)
      参数:
      name - 要返回的枚举常量的名称。
      返回:
      具有指定名称的枚举常量
      抛出:
      IllegalArgumentException - 如果此枚举类没有具有指定名称的常量
      NullPointerException - 如果参数为 null
    • 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 - 如果掩码包含不支持所讨论位置的位位置