Перечисление AccessFlag
- Все реализуемые интерфейсы:
Serializable, Comparable<AccessFlag>, Constable
public enum AccessFlag extends Enum<AccessFlag>
Флаги доступа JVM и флаги, связанные с модулями, имеют отношение к модификаторам языка Java модификаторам, но отличаются от них. Некоторые модификаторы и флаги доступа соответствуют друг другу взаимно однозначно, например
public. В других случаях для некоторых модификаторов уровня языка нет флага доступа, например sealed (JVMS §4.7.31), а некоторые флаги доступа не имеют соответствующего модификатора, например синтетический.
Значения констант, представляющих флаги доступа и модулей, взяты из разделов Спецификации виртуальной машины 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
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
AccessFlag.Location |
Местоположение в файле class, где могут применяться флаги. |
Вложенные классы и интерфейсы, объявленные в классе Enum
Enum.EnumDesc<E> | Модификатор и тип | Класс | Описание |
|---|---|---|
static final class |
Enum.EnumDesc<E extends Enum<E>> |
Номинальный дескриптор константы enum. |
Краткое описание констант перечисления
| Константа перечисления | Описание |
|---|---|
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() |
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления. |
Методы, объявленные в классе Enum
clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf | Модификатор и тип | Метод | Описание |
|---|---|---|
protected final Object |
clone() |
Выбрасывает CloneNotSupportedException. |
final int |
compareTo |
Сравнивает это перечисление с указанным объектом, определяя порядок. |
final Optional |
describeConstable() |
Возвращает дескриптор перечисления EnumDesc для этого экземпляра, если его можно создать, или пустой Optional, если создать его невозможно. |
final boolean |
equals |
Возвращает true, если указанный объект равен этой константе перечисления. |
protected final void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Метод финализации объявлен устаревшим и планируется к удалению. |
final Class |
getDeclaringClass() |
Возвращает объект Class, соответствующий типу перечисления этой константы перечисления. |
final int |
hashCode() |
Возвращает хеш-код этой константы перечисления. |
final String |
name() |
Возвращает имя этой константы перечисления в точности так, как оно указано в объявлении перечисления. |
final int |
ordinal() |
Возвращает порядковый номер этой константы перечисления (её позицию в объявлении перечисления; первой константе присваивается порядковый номер ноль). |
String |
toString() |
Возвращает имя этой константы перечисления, указанное в объявлении. |
static <T extends Enum<T>> |
valueOf |
Возвращает константу указанного класса перечисления с указанным именем. |
Методы, объявленные в классе Object
getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание констант перечисления
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.