Spec-Zone.ru › OpenJDK 25

Класс DynamicConstantDesc<T>

java.lang.Object
java.lang.constant.DynamicConstantDesc<T>
Параметры типа:
T — тип динамической константы
Все реализуемые интерфейсы:
ConstantDesc
Прямые известные подклассы:
Enum.EnumDesc, VarHandle.VarHandleDesc
public abstract non-sealed class DynamicConstantDesc<T> extends Object implements ConstantDesc
Номинальный дескриптор динамической константы (описанной в пуле констант с помощью Constant_Dynamic_info.)

Конкретные подтипы DynamicConstantDesc должны быть неизменяемыми, а их поведение не должно зависеть от идентичности объекта.

Начиная с:
12

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

DynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)
Модификатор Конструктор Описание
protected
Создает номинальный дескриптор динамической константы.

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

Модификатор и тип Метод Описание
ConstantDesc[] bootstrapArgs()
Возвращает аргументы загрузочного метода для этой константы.
List<ConstantDesc> bootstrapArgsList()
Возвращает аргументы загрузочного метода для этой константы в виде неизменяемого List.
DirectMethodHandleDesc bootstrapMethod()
Возвращает MethodHandleDesc, описывающий загрузочный метод для этой константы.
String constantName()
Возвращает имя, которое было бы указано в операнде NameAndType инструкции LDC для этой константы.
ClassDesc constantType()
Возвращает ClassDesc, описывающий тип, который был бы указан в операнде NameAndType инструкции LDC для этой константы.
final boolean equals(Object o)
Сравнивает указанный объект с этим дескриптором на равенство.
final int hashCode()
Возвращает хеш-код этого объекта.
static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod)
Возвращает номинальный дескриптор динамической константы, загрузочный метод которой не имеет статических аргументов, параметр имени которой равен ConstantDescs.DEFAULT_NAME, а параметр типа всегда совпадает с типом возвращаемого значения загрузочного метода.
static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod, ConstantDesc... bootstrapArgs)
Возвращает номинальный дескриптор динамической константы, параметр имени которой равен ConstantDescs.DEFAULT_NAME, а параметр типа всегда совпадает с типом возвращаемого значения загрузочного метода.
static <T> ConstantDesc ofCanonical(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc[] bootstrapArgs)
Возвращает номинальный дескриптор динамической константы, преобразуя его в более конкретный тип, если загрузочный метод константы является общеизвестным и доступен более конкретный тип номинального дескриптора (например, ClassDesc).
static <T> DynamicConstantDesc<T> ofNamed(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)
Возвращает номинальный дескриптор динамической константы.
T resolveConstantDesc(MethodHandles.Lookup lookup)
Разрешает этот дескриптор с помощью отражения, имитируя поведение разрешения, описанное в JVMS 5.4.3, и поведение управления доступом, описанное в JVMS 5.4.4.
String toString()
Возвращает краткое текстовое описание этого описания константы, включая загрузочный метод, имя и тип константы, а также статические аргументы загрузочного метода.

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

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)
Возвращает номинальный дескриптор динамической константы, преобразуя его в более конкретный тип, если загрузочный метод константы является общеизвестным и доступен более конкретный тип номинального дескриптора (например, ClassDesc).

Классы, метод 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

public List<ConstantDesc> bootstrapArgsList()
Возвращает аргументы загрузочного метода для этой константы в виде неизменяемого List.
Возвращает:
List аргументов загрузочного метода

resolveConstantDesc

public T resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
Описание скопировано из интерфейса: ConstantDesc
Разрешает этот дескриптор с помощью отражения, имитируя поведение разрешения, описанное в JVMS 5.4.3, и поведение управления доступом, описанное в JVMS 5.4.4. Контекст разрешения и управления доступом задается параметром MethodHandles.Lookup. Кэширование полученного значения не выполняется.
Определено в:
resolveConstantDesc в интерфейсе ConstantDesc
Параметры:
lookup — MethodHandles.Lookup, задающий контекст разрешения имен и управления доступом
Возвращает:
разрешенное значение константы
Выбрасывает:
ReflectiveOperationException — если класс, метод или поле не удалось разрешить с помощью отражения в процессе разрешения

equals

public final boolean equals(Object o)
Сравнивает указанный объект с этим дескриптором на равенство. Возвращает true тогда и только тогда, когда указанный объект также является DynamicConstantDesc, а загрузочные методы, списки аргументов загрузочного метода, имена констант и типы констант обоих дескрипторов равны.
Переопределяет:
equals в классе Object
Параметры:
o — DynamicConstantDesc для сравнения с этим DynamicConstantDesc
Возвращает:
true, если указанный DynamicConstantDesc равен этому DynamicConstantDesc.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public final int hashCode()
Описание скопировано из класса: Object
Возвращает значение хеш-кода этого объекта. Этот метод поддерживается для использования в хеш-таблицах, например в HashMap.

Общие условия контракта метода hashCode:

  • При каждом вызове для одного и того же объекта в рамках выполнения Java-приложения метод hashCode должен возвращать одно и то же целое число, если информация, используемая при сравнениях equals для объекта, не изменялась. Это целое число не обязано оставаться неизменным при разных запусках одного и того же приложения.
  • Если два объекта равны согласно методу equals, вызов метода hashCode для каждого из этих объектов должен возвращать одинаковый результат — целое число.
  • Не требуется, чтобы вызовы метода hashCode для двух объектов, не равных согласно методу equals, возвращали разные целые числа. Однако программисту следует учитывать, что разные результаты для неравных объектов могут повысить производительность хеш-таблиц.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хеш-кода этого объекта
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Возвращает краткое текстовое описание этого описания константы, включая загрузочный метод, имя и тип константы, а также статические аргументы загрузочного метода.
Переопределяет:
toString в классе Object
Возвращает:
Краткое текстовое описание этого дескриптора точки вызова

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/constant/DynamicConstantDesc.html

Spec-Zone.ru

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