Spec-Zone.ru › OpenJDK 25

Перечисление 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), а некоторые флаги доступа не имеют соответствующего модификатора, например 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
См. также:
  • Modifier
  • ModuleDescriptor.Modifier
  • ModuleDescriptor.Requires.Modifier
  • ModuleDescriptor.Exports.Modifier
  • ModuleDescriptor.Opens.Modifier
  • Modifier

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

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

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

Enum.EnumDesc<E>

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

Константа перечисления Описание
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

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

getClass, notify, notifyAll, wait, wait, wait

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

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
Флаг requires модуля 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
Флаг requires модуля 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/reflect/AccessFlag.html

Spec-Zone.ru

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