Spec-Zone.ru › OpenJDK 21

Класс DynamicConstantDesc<T>

java.lang.Object
java.lang.constant.DynamicConstantDesc<T>
Type Parameters:
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 - a DirectMethodHandleDesc описывающий метод инициализации для константы
constantName - Неполное имя, которое будет отображаться в операнде NameAndType оператора LDC для этой константы
constantType - a 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 - a DirectMethodHandleDesc описывающий метод инициализации для константы
constantName - Неполное имя, которое будет отображаться в операнде NameAndType оператора LDC для этой константы
constantType - a 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 - a DirectMethodHandleDesc описывающий метод инициализации для константы
constantName - Неполное имя, которое будет отображаться в операнде NameAndType оператора LDC для этой константы
constantType - a 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 - a DirectMethodHandleDesc описывающий метод инициализации для константы
bootstrapArgs - ConstantDescы, описывающие статические аргументы инициализации, которые будут отображаться в атрибуте BootstrapMethods
Возвращает:
номинальный дескриптор
Исключения:
NullPointerException - если какой-либо аргумент равен null
См. Спецификацию виртуальной машины Java:
4.2.2 Неполные имена

of

public static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod)
Возвращает номинальный дескриптор для динамической константы, у которой метод инициализации не имеет статических аргументов, параметр имени равен ConstantDescs.DEFAULT_NAME, а параметр типа всегда совпадает с типом возвращаемого значения метода инициализации.
Параметры типов:
T - тип динамической константы
Параметры:
bootstrapMethod - a 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, и оба дескриптора имеют равные методы запуска, списки аргументов запуска, имя константы и тип константы.
Overrides:
equals в классе Object
Параметры:
o - объект для сравнения с этим DynamicConstantDesc
Возвращает:
true , если указанный объект равен этому DynamicConstantDesc.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

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

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

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

toString

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

© 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/constant/DynamicConstantDesc.html

Spec-Zone.ru

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