Класс 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
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
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- aDirectMethodHandleDescописывающий метод инициализации для константы -
constantName- Неполное имя, которое будет отображаться в операндеNameAndTypeоператораLDCдля этой константы -
constantType- aClassDescописывающий тип, который будет отображаться в операнде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)
Классы, чей метод Constable.describeConstable() возвращает DynamicConstantDesc с известным методом инициализации, включая Class (для описания примитивных типов), Enum и VarHandle.
API для чтения байткода, которые обрабатывают пул констант и хотят экспонировать записи как ConstantDesc своим вызывающим методам, должны использовать этот метод по умолчанию вместо ofNamed(DirectMethodHandleDesc, String, ClassDesc, ConstantDesc...), так как это может привести к более конкретному типу, который может быть предоставлен вызывающим методам.
- Параметры типов:
-
T- тип динамической константы - Параметры:
-
bootstrapMethod- aDirectMethodHandleDescописывающий метод инициализации для константы -
constantName- Неполное имя, которое будет отображаться в операндеNameAndTypeоператораLDCдля этой константы -
constantType- aClassDescописывающий тип, который будет отображаться в операнде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- aDirectMethodHandleDescописывающий метод инициализации для константы -
constantName- Неполное имя, которое будет отображаться в операндеNameAndTypeоператораLDCдля этой константы -
constantType- aClassDescописывающий тип, который будет отображаться в операнде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- aDirectMethodHandleDescописывающий метод инициализации для константы -
bootstrapArgs-ConstantDescы, описывающие статические аргументы инициализации, которые будут отображаться в атрибутеBootstrapMethods - Возвращает:
- номинальный дескриптор
- Исключения:
-
NullPointerException- если какой-либо аргумент равен null - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неполные имена
of
public static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod)
ConstantDescs.DEFAULT_NAME, а параметр типа всегда совпадает с типом возвращаемого значения метода инициализации.- Параметры типов:
-
T- тип динамической константы - Параметры:
-
bootstrapMethod- aDirectMethodHandleDescописывающий метод инициализации для константы - Возвращает:
- номинальный дескриптор
- Исключения:
-
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
ConstantDescMethodHandles.Lookup. Кэширование результата не выполняется.- Определено в:
-
resolveConstantDescв интерфейсеConstantDesc - Параметры:
-
lookup-MethodHandles.Lookupдля предоставления контекста разрешения имен и контроля доступа - Возвращает:
- разрешённое значение константы
- Исключения:
-
ReflectiveOperationException- если класс, метод или поле не могут быть рефлексивно разрешены в ходе разрешения
equals
public final boolean equals(Object o)
true тогда и только тогда, когда указанный объект также является объектом DynamicConstantDesc, и оба дескриптора имеют равные методы запуска, списки аргументов запуска, имя константы и тип константы.- Overrides:
-
equalsв классеObject - Параметры:
-
o- объект для сравнения с этимDynamicConstantDesc - Возвращает:
-
true, если указанный объект равен этомуDynamicConstantDesc. - См. также:
hashCode
public final int hashCode()
ObjectHashMap. Общий контракт hashCode заключается в следующем:
- Всякий раз, когда он вызывается на одном и том же объекте более одного раза во время выполнения Java-приложения, метод
hashCodeдолжен последовательно возвращать то же целое число, при условии, что никакая информация, используемая в сравненияхequalsна объекте, не изменяется. Это целое число не обязательно должно оставаться постоянным от одного выполнения приложения к другому выполнению того же приложения. - Если два объекта равны согласно методу
equals, то вызов методаhashCodeдля каждого из двух объектов должен давать одинаковый целочисленный результат. - Не требуется, чтобы если два объекта не равны согласно методу
equals, то вызов методаhashCodeдля каждого из двух объектов должен давать различные целочисленные результаты. Однако программист должен понимать, что получение различных целочисленных результатов для неравных объектов может улучшить производительность хэш-таблиц.
- Overrides:
-
hashCodeв классе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