Spec-Zone.ru › OpenJDK 24

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

Методы, унаследованные от класса java.lang.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 аргументов инициализации
END_OF_DOCUMENT_MARKER

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 на каждом из двух объектов должен дать один и тот же результат целого числа.
  • Не требуется, чтобы если два объекта не равны согласно методу equals, то вызов метода hashCode на каждом из двух объектов должен давать различные результаты целых чисел. Тем не менее, программист должен понимать, что получение различных целых результатов для неравных объектов может повысить производительность хэш-таблиц.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хэш-кода для этого объекта
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/constant/DynamicConstantDesc.html

Spec-Zone.ru

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