Enum Class AccessFlag
- All Implemented Interfaces:
Serializable,Comparable<AccessFlag>,Constable
JVM access and module-related flags are related to, but distinct
from Java language modifiers. Some modifiers
and access flags have a one-to-one correspondence, such as
public. In other cases, some language-level modifiers do
not have an access flag, such as sealed (JVMS
) and some access flags have no corresponding
modifier, such as synthetic.
The values for the constants representing the access and module flags are taken from sections of The Java Virtual Machine Specification including (class access and property modifiers), (field access and property flags), (method access and property flags), (nested class access and property flags), (method parameters), and (module flags and requires, exports, and opens flags).
The mask values for the different access
flags are not distinct. Flags are defined for different
kinds of JVM structures and the same bit position has different
meanings in different contexts. For example, 0x0000_0040
indicates a volatile field but a bridge method; 0x0000_0080 indicates a transient field but a variable
arity (varargs) method.
- Since:
- 20
- See Also:
-
ModifierModuleDescriptor.ModifierModuleDescriptor.Requires.ModifierModuleDescriptor.Exports.ModifierModuleDescriptor.Opens.Modifierjava.compiler/javax.lang.model.element.Modifier
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumA location within a class file where flags can be applied.Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>> -
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionThe access flagACC_ABSTRACT, corresponding to the source modifierabstract, with a mask value of{@value "0x%04x" Modifier#ABSTRACT}.The access flagACC_ANNOTATIONwith a mask value of{@value "0x%04x" Modifier#ANNOTATION}.The access flagACC_BRIDGEwith a mask value of{@value "0x%04x" Modifier#BRIDGE}The access flagACC_ENUMwith a mask value of{@value "0x%04x" Modifier#ENUM}.The access flagACC_FINAL, corresponding to the source modifierfinal, with a mask value of{@value "0x%04x" Modifier#FINAL}.The access flagACC_INTERFACEwith a mask value of0x0200.The access flagACC_MANDATEDwith a mask value of{@value "0x%04x" Modifier#MANDATED}.The access flagACC_MODULEwith a mask value of0x8000.The access flagACC_NATIVE, corresponding to the source modifiernative, with a mask value of{@value "0x%04x" Modifier#NATIVE}.The module flagACC_OPENwith a mask value of0x0020.The access flagACC_PRIVATE, corresponding to the source modifierprivate, with a mask value of{@value "0x%04x" Modifier#PRIVATE}.The access flagACC_PROTECTED, corresponding to the source modifierprotected, with a mask value of{@value "0x%04x" Modifier#PROTECTED}.The access flagACC_PUBLIC, corresponding to the source modifierpublic, with a mask value of{@value "0x%04x" Modifier#PUBLIC}.The access flagACC_STATIC, corresponding to the source modifierstatic, with a mask value of{@value "0x%04x" Modifier#STATIC}.The module requires flagACC_STATIC_PHASEwith a mask value of0x0040.The access flagACC_STRICT, corresponding to the source modifierstrictfp, with a mask value of{@value "0x%04x" Modifier#STRICT}.The access flagACC_SUPERwith a mask value of0x0020.The access flagACC_SYNCHRONIZED, corresponding to the source modifiersynchronized, with a mask value of{@value "0x%04x" Modifier#SYNCHRONIZED}.The access flagACC_SYNTHETICwith a mask value of{@value "0x%04x" Modifier#SYNTHETIC}.The access flagACC_TRANSIENT, corresponding to the source modifiertransient, with a mask value of{@value "0x%04x" Modifier#TRANSIENT}.The module requires flagACC_TRANSITIVEwith a mask value of0x0020.The access flagACC_VARARGSwith a mask value of{@value "0x%04x" Modifier#VARARGS}.The access flagACC_VOLATILE, corresponding to the source modifiervolatile, with a mask value of{@value "0x%04x" Modifier#VOLATILE}. -
Method Summary
Modifier and TypeMethodDescriptionReturns kinds of constructs the flag can be applied to in the latest class file format version.Returns kinds of constructs the flag can be applied to in the given class file format version.intmask()Returns the corresponding integer mask for the access flag.static Set<AccessFlag>maskToAccessFlags(int mask, AccessFlag.Location location) Returns an unmodifiable set of access flags for the given mask value appropriate for the location in question.booleanReturns whether or not the flag has a directly corresponding modifier in the Java programming language.static AccessFlagReturns the enum constant of this class with the specified name.static AccessFlag[]values()Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
PUBLIC
The access flagACC_PUBLIC, corresponding to the source modifierpublic, with a mask value of{@value "0x%04x" Modifier#PUBLIC}. -
PRIVATE
The access flagACC_PRIVATE, corresponding to the source modifierprivate, with a mask value of{@value "0x%04x" Modifier#PRIVATE}. -
PROTECTED
The access flagACC_PROTECTED, corresponding to the source modifierprotected, with a mask value of{@value "0x%04x" Modifier#PROTECTED}. -
STATIC
The access flagACC_STATIC, corresponding to the source modifierstatic, with a mask value of{@value "0x%04x" Modifier#STATIC}. -
FINAL
The access flagACC_FINAL, corresponding to the source modifierfinal, with a mask value of{@value "0x%04x" Modifier#FINAL}. -
SUPER
The access flagACC_SUPERwith a mask value of0x0020. -
OPEN
The module flagACC_OPENwith a mask value of0x0020.- See Also:
-
TRANSITIVE
The module requires flagACC_TRANSITIVEwith a mask value of0x0020. -
SYNCHRONIZED
The access flagACC_SYNCHRONIZED, corresponding to the source modifiersynchronized, with a mask value of{@value "0x%04x" Modifier#SYNCHRONIZED}. -
STATIC_PHASE
The module requires flagACC_STATIC_PHASEwith a mask value of0x0040. -
VOLATILE
The access flagACC_VOLATILE, corresponding to the source modifiervolatile, with a mask value of{@value "0x%04x" Modifier#VOLATILE}. -
BRIDGE
The access flagACC_BRIDGEwith a mask value of{@value "0x%04x" Modifier#BRIDGE}- See Also:
-
TRANSIENT
The access flagACC_TRANSIENT, corresponding to the source modifiertransient, with a mask value of{@value "0x%04x" Modifier#TRANSIENT}. -
VARARGS
The access flagACC_VARARGSwith a mask value of{@value "0x%04x" Modifier#VARARGS}.- See Also:
-
NATIVE
The access flagACC_NATIVE, corresponding to the source modifiernative, with a mask value of{@value "0x%04x" Modifier#NATIVE}. -
INTERFACE
The access flagACC_INTERFACEwith a mask value of0x0200.- See Also:
-
ABSTRACT
The access flagACC_ABSTRACT, corresponding to the source modifierabstract, with a mask value of{@value "0x%04x" Modifier#ABSTRACT}. -
STRICT
The access flagACC_STRICT, corresponding to the source modifierstrictfp, with a mask value of{@value "0x%04x" Modifier#STRICT}. -
SYNTHETIC
The access flagACC_SYNTHETICwith a mask value of{@value "0x%04x" Modifier#SYNTHETIC}. -
ANNOTATION
The access flagACC_ANNOTATIONwith a mask value of{@value "0x%04x" Modifier#ANNOTATION}.- See Also:
-
ENUM
The access flagACC_ENUMwith a mask value of{@value "0x%04x" Modifier#ENUM}.- See Also:
-
MANDATED
The access flagACC_MANDATEDwith a mask value of{@value "0x%04x" Modifier#MANDATED}. -
MODULE
The access flagACC_MODULEwith a mask value of0x8000.
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException- if this enum class has no constant with the specified nameNullPointerException- if the argument is null
-
mask
public int mask()Returns the corresponding integer mask for the access flag.- Returns:
- the corresponding integer mask for the access flag
-
sourceModifier
public boolean sourceModifier()Returns whether or not the flag has a directly corresponding modifier in the Java programming language.- Returns:
- whether or not the flag has a directly corresponding modifier in the Java programming language
-
locations
Returns kinds of constructs the flag can be applied to in the latest class file format version.- Returns:
- kinds of constructs the flag can be applied to in the latest class file format version
-
locations
Returns kinds of constructs the flag can be applied to in the given class file format version.- Parameters:
cffv- the class file format version to use- Returns:
- kinds of constructs the flag can be applied to in the given class file format version
- Throws:
NullPointerException- if the parameter isnull
-
maskToAccessFlags
Returns an unmodifiable set of access flags for the given mask value appropriate for the location in question.- Parameters:
mask- bit mask of access flagslocation- context to interpret mask value- Returns:
- an unmodifiable set of access flags for the given mask value appropriate for the location in question
- Throws:
IllegalArgumentException- if the mask contains bit positions not support for the location in question
-