Spec-Zone.ru › OpenJDK 17

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

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
Parameters:
o - сравниваемый с этим DynamicConstantDesc объект
Returns:
true если указанный DynamicConstantDesc равен этому DynamicConstantDesc.
See Also:
  • Object.hashCode()
  • HashMap

hashCode

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

Общий контракт hashCode:

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

toString

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

© 1993, 2021, 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/17/docs/api/java.base/java/lang/constant/DynamicConstantDesc.html

Spec-Zone.ru

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