Класс DynamicConstantDesc<T>
- Параметры типа:
T— тип динамической константы
- Все реализуемые интерфейсы:
ConstantDesc
- Прямые известные подклассы:
Enum.EnumDesc, VarHandle.VarHandleDesc
public abstract non-sealed class DynamicConstantDesc<T> extends Object implements ConstantDesc
Constant_Dynamic_info.) Конкретные подтипы DynamicConstantDesc должны быть неизменяемыми, а их поведение не должно зависеть от идентичности объекта.
- Начиная с:
- 12
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает номинальный дескриптор динамической константы. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
ConstantDesc[] |
bootstrapArgs() |
Возвращает аргументы загрузочного метода для этой константы. |
List |
bootstrapArgsList() |
Возвращает аргументы загрузочного метода для этой константы в виде неизменяемого List. |
DirectMethodHandleDesc |
bootstrapMethod() |
Возвращает MethodHandleDesc, описывающий загрузочный метод для этой константы. |
String |
constantName() |
Возвращает имя, которое было бы указано в операнде NameAndType инструкции LDC для этой константы. |
ClassDesc |
constantType() |
Возвращает ClassDesc, описывающий тип, который был бы указан в операнде NameAndType инструкции LDC для этой константы. |
final boolean |
equals |
Сравнивает указанный объект с этим дескриптором на равенство. |
final int |
hashCode() |
Возвращает хеш-код этого объекта. |
static <T> DynamicConstantDesc |
of |
Возвращает номинальный дескриптор динамической константы, загрузочный метод которой не имеет статических аргументов, параметр имени которой равен ConstantDescs.DEFAULT_NAME, а параметр типа всегда совпадает с типом возвращаемого значения загрузочного метода. |
static <T> DynamicConstantDesc |
of |
Возвращает номинальный дескриптор динамической константы, параметр имени которой равен ConstantDescs.DEFAULT_NAME, а параметр типа всегда совпадает с типом возвращаемого значения загрузочного метода. |
static <T> ConstantDesc |
ofCanonical |
Возвращает номинальный дескриптор динамической константы, преобразуя его в более конкретный тип, если загрузочный метод константы является общеизвестным и доступен более конкретный тип номинального дескриптора (например, ClassDesc). |
static <T> DynamicConstantDesc |
ofNamed |
Возвращает номинальный дескриптор динамической константы. |
T |
resolveConstantDesc |
|
String |
toString() |
Возвращает краткое текстовое описание этого описания константы, включая загрузочный метод, имя и тип константы, а также статические аргументы загрузочного метода. |
Подробное описание конструкторов
DynamicConstantDesc
protected DynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)
- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий загрузочный метод константы -
constantName— Неквалифицированное имя, которое было бы указано в операндеNameAndTypeинструкцииLDCдля этой константы -
constantType—ClassDesc, описывающий тип, который был бы указан в операндеNameAndTypeинструкцииLDCдля этой константы -
bootstrapArgs—ConstantDesc, описывающие статические аргументы загрузочного метода, которые были бы указаны в атрибутеBootstrapMethods - Выбрасывает:
-
NullPointerException— если какой-либо аргумент равен null -
IllegalArgumentException— еслиnameимеет неверный формат - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неквалифицированные имена
Подробное описание методов
ofCanonical
public static <T> ConstantDesc ofCanonical(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc[] bootstrapArgs)
Классы, метод Constable.describeConstable() которых возвращает DynamicConstantDesc с общеизвестным загрузочным методом, включают Class (для экземпляров, описывающих примитивные типы), Enum и VarHandle.
API чтения байт-кода, обрабатывающие пул констант и предоставляющие его записи вызывающим сторонам в виде ConstantDesc, как правило, должны использовать этот метод вместо ofNamed(DirectMethodHandleDesc, String, ClassDesc, ConstantDesc...), поскольку он может предоставить вызывающим сторонам более конкретный тип.
- Параметры типа:
T— тип динамической константы- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий загрузочный метод константы -
constantName— Неквалифицированное имя, которое было бы указано в операндеNameAndTypeинструкцииLDCдля этой константы -
constantType—ClassDesc, описывающий тип, который был бы указан в операндеNameAndTypeинструкцииLDCдля этой константы -
bootstrapArgs—ConstantDesc, описывающие статические аргументы загрузочного метода, которые были бы указаны в атрибутеBootstrapMethods - Возвращает:
- номинальный дескриптор
- Выбрасывает:
-
NullPointerException— если какой-либо аргумент равен null -
IllegalArgumentException— еслиnameимеет неверный формат - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неквалифицированные имена
ofNamed
public static <T> DynamicConstantDesc<T> ofNamed(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)
- Параметры типа:
T— тип динамической константы- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий загрузочный метод константы -
constantName— Неквалифицированное имя, которое было бы указано в операндеNameAndTypeинструкцииLDCдля этой константы -
constantType—ClassDesc, описывающий тип, который был бы указан в операндеNameAndTypeинструкцииLDCдля этой константы -
bootstrapArgs—ConstantDesc, описывающие статические аргументы загрузочного метода, которые были бы указаны в атрибутеBootstrapMethods - Возвращает:
- номинальный дескриптор
- Выбрасывает:
-
NullPointerException— если какой-либо аргумент равен null -
IllegalArgumentException— еслиnameимеет неверный формат - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неквалифицированные имена
of
public static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod, ConstantDesc... bootstrapArgs)
ConstantDescs.DEFAULT_NAME, а параметр типа всегда совпадает с типом возвращаемого значения загрузочного метода.- Параметры типа:
T— тип динамической константы- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий загрузочный метод константы -
bootstrapArgs—ConstantDesc, описывающие статические аргументы загрузочного метода, которые были бы указаны в атрибутеBootstrapMethods - Возвращает:
- номинальный дескриптор
- Выбрасывает:
-
NullPointerException— если какой-либо аргумент равен null - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неквалифицированные имена
of
public static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod)
ConstantDescs.DEFAULT_NAME, а параметр типа всегда совпадает с типом возвращаемого значения загрузочного метода.- Параметры типа:
T— тип динамической константы- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий загрузочный метод константы - Возвращает:
- номинальный дескриптор
- Выбрасывает:
-
NullPointerException— если какой-либо аргумент равен null
constantName
public String constantName()
NameAndType инструкции LDC для этой константы.- Возвращает:
- имя константы
constantType
public ClassDesc constantType()
ClassDesc, описывающий тип, который был бы указан в операнде NameAndType инструкции LDC для этой константы.- Возвращает:
- тип константы
bootstrapMethod
public DirectMethodHandleDesc bootstrapMethod()
MethodHandleDesc, описывающий загрузочный метод для этой константы.- Возвращает:
- загрузочный метод
bootstrapArgs
public ConstantDesc[] bootstrapArgs()
- Возвращает:
- аргументы загрузочного метода
bootstrapArgsList
resolveConstantDesc
public T resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
ConstantDescMethodHandles.Lookup. Кэширование полученного значения не выполняется.- Определено в:
-
resolveConstantDescв интерфейсеConstantDesc - Параметры:
-
lookup—MethodHandles.Lookup, задающий контекст разрешения имен и управления доступом - Возвращает:
- разрешенное значение константы
- Выбрасывает:
-
ReflectiveOperationException— если класс, метод или поле не удалось разрешить с помощью отражения в процессе разрешения
equals
public final boolean equals(Object o)
true тогда и только тогда, когда указанный объект также является DynamicConstantDesc, а загрузочные методы, списки аргументов загрузочного метода, имена констант и типы констант обоих дескрипторов равны.hashCode
public final int hashCode()
ObjectHashMap. Общие условия контракта метода hashCode:
- При каждом вызове для одного и того же объекта в рамках выполнения Java-приложения метод
hashCodeдолжен возвращать одно и то же целое число, если информация, используемая при сравненияхequalsдля объекта, не изменялась. Это целое число не обязано оставаться неизменным при разных запусках одного и того же приложения. - Если два объекта равны согласно методу
equals, вызов методаhashCodeдля каждого из этих объектов должен возвращать одинаковый результат — целое число. - Не требуется, чтобы вызовы метода
hashCodeдля двух объектов, не равных согласно методуequals, возвращали разные целые числа. Однако программисту следует учитывать, что разные результаты для неравных объектов могут повысить производительность хеш-таблиц.
toString
© 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/constant/DynamicConstantDesc.html