Spec-Zone.ru › OpenJDK 21

Перечисление 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 (флаги модулей и флаги требует, экспортирует и открывает).

Значения маски для различных флагов доступа не являются уникальными. Флаги определены для различных типов структур 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
END_OF_DOCUMENT_MARKER

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

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

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

Enum.EnumDesc<E extends Enum<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
Флаг, требующий модуль 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
Флаг, требующий модуль 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)
Возвращает неизменяемый набор флагов доступа для данного значения маски, подходящий для данного расположения.
boolean sourceModifier()
Возвращает, есть ли у флага непосредственный соответствующий модификатор в языке программирования Java.
static AccessFlag valueOf(String name)
Возвращает константу перечисления этого класса с указанным именем.
static AccessFlag[] values()
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления.

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

clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf

Методы, объявленные в классе java.lang.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
Флаг модуля, требующий 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()
Возвращает соответствующую целочисленную маску для флага доступа.
Возвращает:
соответствующую целочисленную маску для флага доступа

sourceModifier

public boolean sourceModifier()
Возвращает, имеет ли флаг непосредственный соответствующий модификатор в языке программирования Java.
Возвращает:
имеет ли флаг непосредственный соответствующий модификатор в языке программирования 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, 2023, 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/21/docs/api/java.base/java/lang/reflect/AccessFlag.html

Spec-Zone.ru

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