Перечисление 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 (флаги модулей и флаги требует, экспортирует и открывает).
Значения маски для различных флагов доступа не являются уникальными. Флаги определены для различных типов структур JVM, и одна и та же позиция бита имеет разные значения в разных контекстах. Например, 0x0000_0040 указывает на volatile поле, но мост метода; 0x0000_0080 указывает на transient поле, но метод с переменным числом аргументов (varargs).
- Примечание API:
- Формат файла класса JVM имеет новую версию, определенную для каждого нового релиза функций. Новая версия файла класса может определить новые флаги доступа или удалить старые.
AccessFlagпредназначен для моделирования набора флагов доступа во всех версиях формата файлов класса. Диапазон версий, в которых распознается флаг доступа, не указан явно в этом API. Подробности см. в текущей спецификации виртуальной машины Java. Если не указано иное, флаги доступа предполагаются распознаваемыми в текущей версии. - Требования к реализации:
- Константы флага доступа упорядочены по неубывающему значению маски; то есть значение маски константы больше или равно значению маски непосредственного соседа слева (синтаксически). Если добавляются новые константы, это свойство будет сохранено. Это означает, что новые константы не обязательно будут добавлены в конец существующего списка.
- С тех пор:
- 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
public static final AccessFlag PUBLIC
PRIVATE
public static final AccessFlag PRIVATE
PROTECTED
public static final AccessFlag PROTECTED
STATIC
public static final AccessFlag STATIC
FINAL
public static final AccessFlag 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
public static final AccessFlag VOLATILE
BRIDGE
public static final AccessFlag BRIDGE
ACC_BRIDGE со значением маски 0x0040
- См. также:
TRANSIENT
public static final AccessFlag TRANSIENT
VARARGS
public static final AccessFlag VARARGS
ACC_VARARGS со значением маски 0x0080.- См. также:
NATIVE
public static final AccessFlag NATIVE
INTERFACE
public static final AccessFlag INTERFACE
ACC_INTERFACE со значением маски 0x0200.- См. также:
ABSTRACT
public static final AccessFlag 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()
- Возвращает:
- соответствующую целочисленную маску для флага доступа
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, 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