Перечисление AccessFlag
- Все реализуемые интерфейсы:
-
Serializable,Comparable<AccessFlag>,Constable
public enum AccessFlag extends Enum<AccessFlag>
Флаги доступа JVM и модуля связаны, но отличны от модификаторов языка Java. Некоторые модификаторы и флаги доступа соответствуют один к одному, такие как
public. В других случаях некоторые модификаторы на уровне языка не имеют флага доступа, такие как sealed (JVMS 4.7.31), и некоторые флаги доступа не имеют соответствующего модификатора, например, синтетический.
Значения для констант, представляющих флаги доступа и модуля, взяты из разделов Спецификация Java Virtual Machine, включая 4.1 (доступ к классу и модификаторы свойств), 4.5 (доступ к полям и флаги свойств), 4.6 (доступ к методам и флаги свойств), 4.7.6 (доступ к вложенным классам и флаги свойств), 4.7.24 (параметры метода) и 4.7.25 (флаги модуля и флаги требует, экспортирует и открывает).
Значения маски для различных флагов доступа не являются различными. Флаги определены для различных типов структур JVM, и одна и та же позиция бита имеет разное значение в разных контекстах. Например, 0x0000_0040 указывает поле volatile, но метод-мост; 0x0000_0080 указывает поле transient, но метод с переменной арностью (varargs) .
- Примечание API:
- Формат файла класса JVM имеет новую версию, определенную для каждого нового релиза функциональности. Новая версия файла класса может определить новые флаги доступа или убрать старые.
AccessFlagпредназначена для моделирования набора флагов доступа через версии формата файла класса. Диапазон версий, в которых распознается флаг доступа, явно не указан в этом API. Обратитесь к текущей Спецификации Java Virtual Machine для получения подробностей. Если не указано иное, предполагается, что флаги доступа распознаются в текущей версии. - Требования к реализации:
- Константы флагов доступа упорядочены по неубывающему значению маски; то есть значение маски константы больше или равно значению маски непосредственного соседа слева (синтаксически). Если добавляются новые константы, это свойство сохраняется. Это означает, что новые константы не обязательно будут добавлены в конец существующего списка.
- С:
- 20
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
AccessFlag.Location |
Расположение внутри файла класса, где можно применить флаги. |
Вложенные классы/интерфейсы, объявленные в классе java.lang.Enum
Enum.EnumDesc<E extends Enum<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 |
Флаг модуля, требующего ACC_STATIC_PHASE со значением маски 0x0040. |
STRICT |
|
SUPER |
Флаг доступа ACC_SUPER со значением маски
0x0020. |
SYNCHRONIZED |
Флаг доступа ACC_SYNCHRONIZED, соответствующий исходному модификатору synchronized, со значением маски 0x0020. |
SYNTHETIC |
Флаг доступа ACC_SYNTHETIC со значением маски 0x1000. |
TRANSIENT |
|
TRANSITIVE |
Флаг модуля, требующего ACC_TRANSITIVE со значением маски 0x0020. |
VARARGS |
Флаг доступа ACC_VARARGS со значением маски 0x0080. |
VOLATILE |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Set |
locations() |
Возвращает типы конструкций, к которым можно применить флаг в последней версии формата файла класса. |
Set |
locations |
Возвращает типы конструкций, к которым можно применить флаг в данной версии формата файла класса. |
int |
mask() |
Возвращает соответствующую целочисленную маску для флага доступа. |
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
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()
- Возвращает:
- соответствующую целочисленную маску для флага доступа
sourceModifier
public boolean sourceModifier()
- Возвращает:
- имеет ли флаг непосредственно соответствующий модификатор в языке программирования 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- если маска содержит битовые позиции, не поддерживаемые для заданной позиции
© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/reflect/AccessFlag.html