AccessFlags (Java SE 25 & JDK 25)
Description: declaration: module: java.base, package: java.lang.classfile, interface: AccessFlags
Keywords: java.lang.classfile.AccessFlags interface

# Interface AccessFlags

All Superinterfaces:
  `ClassElement, ClassFileElement, FieldElement, MethodElement`

public sealed interface AccessFlags extends ClassElement, MethodElement, FieldElement
Models the access flags for a class, method, or field. The access flags appears exactly once in each class, method, or field; a `ClassBuilder` and a `FieldBuilder` chooses an unspecified default value if access flags are not provided, and a `MethodBuilder` is always created with access flags.

`AccessFlags` cannot be created via a factory method directly; it can be created with `withFlags` methods on the respective builders.

A `MethodBuilder` throws an `IllegalArgumentException` if it is supplied an `AccessFlags` object that changes the preexisting `ACC_STATIC` flag of the builder, because the access flag change may invalidate previously supplied data to the builder.

API Note:
  The access flags of classes, methods, and fields are modeled as a standalone object to support streaming as elements for `ClassFileTransform`. Other access flags are not elements of a `CompoundElement` and thus not modeled by `AccessFlags`; they provide their own `flagsMask`, `flags`, and `has` methods.
Since:
  24
See Also:
  - `ClassModel.flags()`
  - `FieldModel.flags()`
  - `MethodModel.flags()`
  - `ClassBuilder.withFlags(int)`
  - `FieldBuilder.withFlags(int)`
  - `MethodBuilder.withFlags(int)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Set<AccessFlag>`
  `flags()`
  Returns the access flags, as a set of flag enums.
  `int`
  `flagsMask()`
  Returns the access flags, as a bit mask.
  `boolean`
  `has(AccessFlag flag)`
  Returns whether the specified flag is set.
  `AccessFlag.Location`
  `location()`
  Returns the `class` file location for this element, which is either class, method, or field.

- ## Method Details

  - ### flagsMask

    int flagsMask()
    Returns the access flags, as a bit mask. It is in the range of unsigned short, `[0, 0xFFFF]`.
    Returns:
      the access flags, as a bit mask

  - ### flags

    Set<AccessFlag> flags()
    Returns the access flags, as a set of flag enums.
    Returns:
      the access flags, as a set of flag enums
    Throws:
      `IllegalArgumentException` - if the flags mask has any undefined bit set
    See Also:
      - `location()`

  - ### has

    boolean has(AccessFlag flag)
    Returns whether the specified flag is set. If the specified flag is not available to this location, returns `false`.
    Parameters:
      `flag` - the flag to test
    Returns:
      whether the specified flag is set
    See Also:
      - `location()`

  - ### location

    AccessFlag.Location location()
    Returns the `class` file location for this element, which is either class, method, or field.
    Returns:
      the `class` file location for this element, which is either class, method, or field
    See Also:
      - `AccessFlag.Location.CLASS`
      - `AccessFlag.Location.FIELD`
      - `AccessFlag.Location.METHOD`