Перечисление AccessFlag
- Все реализуемые интерфейсы:
Serializable, Comparable<AccessFlag>, Constable
public enum AccessFlag extends Enum<AccessFlag>
Флаги доступа 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, но метод bridge; 0x0000_0080 обозначает поле transient, но метод с переменным числом аргументов (varargs).
- Примечание к API:
- Для каждого нового выпуска функциональности определяется новая версия формата файлов классов JVM. В новой версии формата файлов классов могут определяться новые флаги доступа или отменяться старые.
AccessFlagпредназначен для моделирования набора флагов доступа во всех версиях формата файлов классов. Диапазон версий, в которых распознаётся флаг доступа, в этом API явно не указан. Подробности см. в актуальной Спецификации виртуальной машины Java. Если не указано иное, можно считать, что флаги доступа распознаются в текущей версии. - Требования к реализации:
- Константы флагов доступа упорядочены по неубывающим значениям масок; то есть значение маски константы больше или равно значению маски непосредственно соседней с ней константы слева (в синтаксическом порядке). Если будут добавлены новые константы, это свойство сохранится. Это означает, что новые константы не обязательно будут добавляться в конец существующего списка.
- Начиная с версии:
- 20
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
AccessFlag.Location |
Расположение в файле class, где могут применяться флаги. |
Вложенные классы и интерфейсы, объявленные в классе Enum
Enum.EnumDesc<E>
Краткое описание констант перечисления
| Константа перечисления | Описание |
|---|---|
ABSTRACT |
|
ANNOTATION |
Флаг доступа ACC_ANNOTATION со значением маски 0x2000. |
BRIDGE |
Флаг доступа ACC_BRIDGE со значением маски 0x0040
|
ENUM |
Флаг доступа ACC_ENUM со значением маски 0x4000. |
FINAL |
|
INTERFACE |
Флаг доступа ACC_INTERFACE со значением маски 0x0200. |
MANDATED |
Флаг доступа ACC_MANDATED со значением маски 0x8000. |
MODULE |
Флаг доступа ACC_MODULE со значением маски
0x8000. |
NATIVE |
|
OPEN |
Флаг модуля ACC_OPEN со значением маски
0x0020. |
PRIVATE |
|
PROTECTED |
|
PUBLIC |
|
STATIC |
|
STATIC_PHASE |
Флаг requires модуля ACC_STATIC_PHASE со значением маски 0x0040. |
STRICT |
|
SUPER |
Флаг доступа ACC_SUPER со значением маски
0x0020. |
SYNCHRONIZED |
Флаг доступа ACC_SYNCHRONIZED, соответствующий исходному модификатору synchronized, со значением маски 0x0020. |
SYNTHETIC |
Флаг доступа ACC_SYNTHETIC со значением маски 0x1000. |
TRANSIENT |
|
TRANSITIVE |
Флаг requires модуля ACC_TRANSITIVE со значением маски 0x0020. |
VARARGS |
Флаг доступа ACC_VARARGS со значением маски 0x0080. |
VOLATILE |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Set |
locations() |
Возвращает расположения, в которых можно применить этот флаг в текущей версии формата файла классов. |
Set |
locations |
Возвращает расположения, в которых можно применить этот флаг в заданной версии формата файла классов. |
int |
mask() |
Возвращает соответствующую маску флага доступа. |
static Set |
maskToAccessFlags |
Возвращает неизменяемый набор флагов доступа для заданного значения маски, соответствующий расположению в текущей версии формата файла классов. |
static Set |
maskToAccessFlags |
Возвращает неизменяемый набор флагов доступа для заданного значения маски, соответствующий расположению в указанной версии формата файла классов. |
boolean |
sourceModifier() |
Возвращает, имеет ли этот флаг непосредственно соответствующий ему модификатор в языке программирования Java. |
static AccessFlag |
valueOf |
Возвращает константу перечисления этого класса с указанным именем. |
static AccessFlag[] |
values() |
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления. |
Подробное описание констант перечисления
PUBLIC
PRIVATE
PROTECTED
STATIC
FINAL
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
ACC_SYNCHRONIZED, соответствующий исходному модификатору synchronized, со значением маски 0x0020.STATIC_PHASE
public static final AccessFlag STATIC_PHASE
ACC_STATIC_PHASE со значением маски 0x0040.- См. также:
VOLATILE
BRIDGE
public static final AccessFlag BRIDGE
ACC_BRIDGE со значением маски 0x0040
- См. также:
TRANSIENT
VARARGS
public static final AccessFlag VARARGS
ACC_VARARGS со значением маски 0x0080.- См. также:
NATIVE
INTERFACE
public static final AccessFlag INTERFACE
ACC_INTERFACE со значением маски 0x0200.- См. также:
ABSTRACT
STRICT
public static final AccessFlag STRICT
ACC_STRICT, соответствующий исходному модификатору strictfp, со значением маски 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.Подробное описание методов
values
public static AccessFlag[] values()
- Возвращает:
- массив, содержащий константы этого класса перечисления в порядке их объявления
valueOf
public static AccessFlag valueOf(String name)
- Параметры:
-
name— имя возвращаемой константы перечисления. - Возвращает:
- константа перечисления с указанным именем
- Вызывает исключение:
-
IllegalArgumentException— если в этом классе перечисления нет константы с указанным именем -
NullPointerException— если аргумент равен null
mask
public int mask()
char.- Возвращает:
- соответствующая маска флага доступа
sourceModifier
public boolean sourceModifier()
- Возвращает:
- имеет ли этот флаг непосредственно соответствующий ему модификатор в языке программирования Java
locations
public Set<AccessFlag.Location> locations()
Этот метод возвращает пустой набор, если данный флаг не определён в текущей версии формата файла классов.
- Возвращает:
- расположения, в которых можно применить этот флаг в текущей версии формата файла классов
locations
public Set<AccessFlag.Location> locations(ClassFileFormatVersion cffv)
Этот метод возвращает пустой набор, если данный флаг не определён в указанной cffv.
- Параметры:
-
cffv— используемая версия формата файла классов - Возвращает:
- расположения, в которых можно применить этот флаг в заданной версии формата файла классов
- Вызывает исключение:
-
NullPointerException— если параметр равенnull
maskToAccessFlags
public static Set<AccessFlag> maskToAccessFlags(int mask, AccessFlag.Location location)
- Параметры:
-
mask— битовая маска флагов доступа -
location— контекст для интерпретации значения маски - Возвращает:
- неизменяемый набор флагов доступа для заданного значения маски, соответствующий расположению в текущей версии формата файла классов
- Вызывает исключение:
-
IllegalArgumentException— если маска содержит позиции битов, не определённые для этого расположения в текущем формате файла классов -
NullPointerException— еслиlocationравноnull
maskToAccessFlags
public static Set<AccessFlag> maskToAccessFlags(int mask, AccessFlag.Location location, ClassFileFormatVersion cffv)
- Параметры:
-
mask— битовая маска флагов доступа -
location— контекст для интерпретации значения маски -
cffv— формат файла классов для интерпретации значения маски - Возвращает:
- неизменяемый набор флагов доступа для заданного значения маски, соответствующий расположению в указанной версии формата файла классов
- Вызывает исключение:
-
IllegalArgumentException— если маска содержит позиции битов, не определённые для этого расположения в указанном формате файла классов -
NullPointerException— еслиlocationилиcffvравноnull - Начиная с версии:
- 25
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/reflect/AccessFlag.html