Класс 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- Неполное имя, которое будет отображаться в операндеNameAndTypeLDCдля этой константы -
constantType-ClassDesc, описывающий тип, который будет отображаться в операндеNameAndTypeLDCдля этой константы -
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- Неполное имя, которое будет отображаться в операндеNameAndTypeLDCдля этой константы -
constantType-ClassDesc, описывающий тип, который будет отображаться в операндеNameAndTypeLDCдля этой константы -
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- Неполное имя, которое будет отображаться в операндеNameAndTypeLDCдля этой константы -
constantType-ClassDesc, описывающий тип, который будет отображаться в операндеNameAndTypeLDCдля этой константы -
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на каждом из двух объектов должен дать один и тот же результат целого числа. - Не требуется, чтобы если два объекта не равны согласно методу
equals, то вызов методаhashCodeна каждом из двух объектов должен давать различные результаты целых чисел. Тем не менее, программист должен понимать, что получение различных целых результатов для неравных объектов может повысить производительность хэш-таблиц.
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/constant/DynamicConstantDesc.html