Spec-Zone.ru › OpenJDK 27

Перечисление AccessFlag

java.lang.Object
java.lang.Enum<AccessFlag>
java.lang.reflect.AccessFlag
Все реализуемые интерфейсы:
Serializable, Comparable<AccessFlag>, Constable
public enum AccessFlag extends Enum<AccessFlag>
Представляет флаг доступа JVM или флаг, связанный с модулем, для элемента времени выполнения, например класса, поля или метода.

Флаги доступа 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
См. также:
  • Modifier
  • ModuleDescriptor.Modifier
  • ModuleDescriptor.Requires.Modifier
  • ModuleDescriptor.Exports.Modifier
  • ModuleDescriptor.Opens.Modifier
  • Modifier

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static enum  AccessFlag.Location
Местоположение в файле class, где могут применяться флаги.

Вложенные классы и интерфейсы, объявленные в классе Enum

Enum.EnumDesc<E>
Модификатор и тип Класс Описание
static final class  Enum.EnumDesc<E extends Enum<E>>
Номинальный дескриптор константы enum.

Краткое описание констант перечисления

Константа перечисления Описание
ABSTRACT
Флаг доступа ACC_ABSTRACT, соответствующий исходному модификатору abstract, со значением маски 0x0400.
ANNOTATION
Флаг доступа ACC_ANNOTATION со значением маски 0x2000.
BRIDGE
Флаг доступа ACC_BRIDGE со значением маски 0x0040
ENUM
Флаг доступа ACC_ENUM со значением маски 0x4000.
FINAL
Флаг доступа ACC_FINAL, соответствующий исходному модификатору final, со значением маски 0x0010.
INTERFACE
Флаг доступа ACC_INTERFACE со значением маски 0x0200.
MANDATED
Флаг доступа ACC_MANDATED со значением маски 0x8000.
MODULE
Флаг доступа ACC_MODULE со значением маски 0x8000.
NATIVE
Флаг доступа ACC_NATIVE, соответствующий исходному модификатору native, со значением маски 0x0100.
OPEN
Флаг модуля ACC_OPEN со значением маски 0x0020.
PRIVATE
Флаг доступа ACC_PRIVATE, соответствующий исходному модификатору private, со значением маски 0x0002.
PROTECTED
Флаг доступа ACC_PROTECTED, соответствующий исходному модификатору protected, со значением маски 0x0004.
PUBLIC
Флаг доступа ACC_PUBLIC, соответствующий исходному модификатору public, со значением маски 0x0001.
STATIC
Флаг доступа ACC_STATIC, соответствующий исходному модификатору static, со значением маски 0x0008.
STATIC_PHASE
Флаг requires модуля ACC_STATIC_PHASE со значением маски 0x0040.
STRICT
Флаг доступа ACC_STRICT, соответствующий исходному модификатору strictfp, со значением маски 0x0800.
SUPER
Флаг доступа ACC_SUPER со значением маски 0x0020.
SYNCHRONIZED
Флаг доступа ACC_SYNCHRONIZED, соответствующий исходному модификатору synchronized, со значением маски 0x0020.
SYNTHETIC
Флаг доступа ACC_SYNTHETIC со значением маски 0x1000.
TRANSIENT
Флаг доступа ACC_TRANSIENT, соответствующий исходному модификатору transient, со значением маски 0x0080.
TRANSITIVE
Флаг requires модуля ACC_TRANSITIVE со значением маски 0x0020.
VARARGS
Флаг доступа ACC_VARARGS со значением маски 0x0080.
VOLATILE
Флаг доступа ACC_VOLATILE, соответствующий исходному модификатору volatile, со значением маски 0x0040.

Краткое описание методов

Модификатор и тип Метод Описание
Set<AccessFlag.Location> locations()
Возвращает местоположения, в которых этот флаг может применяться в текущей версии формата файла класса.
Set<AccessFlag.Location> locations(ClassFileFormatVersion cffv)
Возвращает местоположения, в которых этот флаг может применяться в указанной версии формата файла класса.
int mask()
Возвращает соответствующую маску флага доступа.
static Set<AccessFlag> maskToAccessFlags(int mask, AccessFlag.Location location)
Возвращает неизменяемый набор флагов доступа для заданного значения маски, соответствующий указанному местоположению в текущей версии формата файла класса.
static Set<AccessFlag> maskToAccessFlags(int mask, AccessFlag.Location location, ClassFileFormatVersion cffv)
Возвращает неизменяемый набор флагов доступа для заданного значения маски, соответствующий указанному местоположению в заданной версии формата файла класса.
boolean sourceModifier()
Возвращает сведения о том, имеет ли этот флаг непосредственно соответствующий ему модификатор в языке программирования Java.
static AccessFlag valueOf(String name)
Возвращает константу перечисления этого класса с указанным именем.
static AccessFlag[] values()
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления.

Методы, объявленные в классе Enum

clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
Модификатор и тип Метод Описание
protected final Object clone()
Выбрасывает CloneNotSupportedException.
final int compareTo(AccessFlag o)
Сравнивает это перечисление с указанным объектом, определяя порядок.
final Optional<Enum.EnumDesc<AccessFlag>> describeConstable()
Возвращает дескриптор перечисления EnumDesc для этого экземпляра, если его можно создать, или пустой Optional, если создать его невозможно.
final boolean equals(Object other)
Возвращает true, если указанный объект равен этой константе перечисления.
protected final void finalize()
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии.
Метод финализации объявлен устаревшим и планируется к удалению.
final Class<AccessFlag> getDeclaringClass()
Возвращает объект Class, соответствующий типу перечисления этой константы перечисления.
final int hashCode()
Возвращает хеш-код этой константы перечисления.
final String name()
Возвращает имя этой константы перечисления в точности так, как оно указано в объявлении перечисления.
final int ordinal()
Возвращает порядковый номер этой константы перечисления (её позицию в объявлении перечисления; первой константе присваивается порядковый номер ноль).
String toString()
Возвращает имя этой константы перечисления, указанное в объявлении.
static <T extends Enum<T>>
T
valueOf(Class<T> enumClass, String name)
Возвращает константу указанного класса перечисления с указанным именем.

Методы, объявленные в классе Object

getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание констант перечисления

PUBLIC

public static final AccessFlag PUBLIC
Флаг доступа ACC_PUBLIC, соответствующий модификатору исходного кода public, со значением маски 0x0001.

PRIVATE

public static final AccessFlag PRIVATE
Флаг доступа ACC_PRIVATE, соответствующий модификатору исходного кода private, со значением маски 0x0002.

PROTECTED

public static final AccessFlag PROTECTED
Флаг доступа ACC_PROTECTED, соответствующий модификатору исходного кода protected, со значением маски 0x0004.

STATIC

public static final AccessFlag STATIC
Флаг доступа ACC_STATIC, соответствующий модификатору исходного кода static, со значением маски 0x0008.

FINAL

public static final AccessFlag FINAL
Флаг доступа ACC_FINAL, соответствующий модификатору исходного кода final, со значением маски 0x0010.

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.
См. также:
  • ModuleDescriptor.isOpen()

TRANSITIVE

public static final AccessFlag TRANSITIVE
Флаг требования модуля ACC_TRANSITIVE со значением маски 0x0020.
См. также:
  • ModuleDescriptor.Requires.Modifier.TRANSITIVE

SYNCHRONIZED

public static final AccessFlag SYNCHRONIZED
Флаг доступа ACC_SYNCHRONIZED, соответствующий модификатору исходного кода synchronized, со значением маски 0x0020.

STATIC_PHASE

public static final AccessFlag STATIC_PHASE
Флаг требования модуля ACC_STATIC_PHASE со значением маски 0x0040.
См. также:
  • ModuleDescriptor.Requires.Modifier.STATIC

VOLATILE

public static final AccessFlag VOLATILE
Флаг доступа ACC_VOLATILE, соответствующий модификатору исходного кода volatile, со значением маски 0x0040.

BRIDGE

public static final AccessFlag BRIDGE
Флаг доступа ACC_BRIDGE со значением маски 0x0040
См. также:
  • Method.isBridge()

TRANSIENT

public static final AccessFlag TRANSIENT
Флаг доступа ACC_TRANSIENT, соответствующий модификатору исходного кода transient, со значением маски 0x0080.

VARARGS

public static final AccessFlag VARARGS
Флаг доступа ACC_VARARGS со значением маски 0x0080.
См. также:
  • Executable.isVarArgs()

NATIVE

public static final AccessFlag NATIVE
Флаг доступа ACC_NATIVE, соответствующий модификатору исходного кода native, со значением маски 0x0100.

INTERFACE

public static final AccessFlag INTERFACE
Флаг доступа ACC_INTERFACE со значением маски 0x0200.
См. также:
  • Class.isInterface()

ABSTRACT

public static final AccessFlag ABSTRACT
Флаг доступа ACC_ABSTRACT, соответствующий модификатору исходного кода abstract, со значением маски 0x0400.

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.
См. также:
  • Class.isSynthetic()
  • Executable.isSynthetic()
  • ModuleDescriptor.Modifier.SYNTHETIC

ANNOTATION

public static final AccessFlag ANNOTATION
Флаг доступа ACC_ANNOTATION со значением маски 0x2000.
См. также:
  • Class.isAnnotation()

ENUM

public static final AccessFlag ENUM
Флаг доступа ACC_ENUM со значением маски 0x4000.
См. также:
  • Class.isEnum()

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.
Возвращает:
значение, указывающее, имеет ли этот флаг непосредственно соответствующий ему модификатор в языке программирования 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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API