Класс 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<ConstantDesc> |
bootstrapArgsList() |
Возвращает аргументы инициализации для этой константы в виде неизменяемого списка List. |
DirectMethodHandleDesc |
bootstrapMethod() |
Возвращает MethodHandleDesc, описывающий метод инициализации для этой константы. |
String |
constantName() |
Возвращает имя, которое будет отображаться в операнде NameAndType для этой константы. |
ClassDesc |
constantType() |
Возвращает ClassDesc, описывающий тип, который будет отображаться в операнде NameAndType для этой константы. |
final boolean |
equals |
Сравнивает указанный объект с этим описанием для проверки равенства. |
final int |
hashCode() |
Возвращает значение хеш-кода для объекта. |
static <T> DynamicConstantDesc<T> |
of |
Возвращает номинальное описание для динамической константы, у которой нет статических аргументов инициализации, имя параметр равен ConstantDescs.DEFAULT_NAME, а тип всегда совпадает с типом возвращаемого значения метода инициализации. |
static <T> DynamicConstantDesc<T> |
of |
Возвращает номинальное описание для динамической константы, у которой имя параметр равен ConstantDescs.DEFAULT_NAME, а тип всегда совпадает с типом возвращаемого значения метода инициализации. |
static <T> ConstantDesc |
ofCanonical |
Возвращает номинальное описание для динамической константы, преобразуя его в более специфичный тип, если константа известного вида и существует более специфичный тип номинального описания (например, ClassDesc). |
static <T> DynamicConstantDesc<T> |
ofNamed |
Возвращает номинальное описание для динамической константы. |
T |
resolveConstantDesc |
Решает это описание рефлексивно, имитируя поведение решения JVMS 5.4.3 и поведение контроля доступа JVMS 5.4.4. |
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
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 - Parameters:
-
o- сравниваемый с этимDynamicConstantDescобъект - Returns:
-
trueесли указанныйDynamicConstantDescравен этомуDynamicConstantDesc. - See Also:
hashCode
public final int hashCode()
ObjectHashMap. Общий контракт hashCode:
- Всякий раз, когда он вызывается на одном и том же объекте более одного раза во время выполнения Java-приложения, метод
hashCodeдолжен последовательно возвращать одно и то же целое число, при условии, что никакие данные, используемые вequalsсравнениях с объектом, не изменяются. Это целое число не обязательно должно оставаться постоянным от одного выполнения приложения к другому. - Если два объекта равны согласно методу
equals, то вызов методаhashCodeдля каждого из двух объектов должен давать один и тот же результат. - Не требуется, чтобы если два объекта не равны согласно методу
equals, то вызов методаhashCodeдля каждого из двух объектов должен давать разные результаты. Тем не менее, программист должен понимать, что получение разных целочисленных результатов для неравных объектов может улучшить производительность хэш-таблиц.
- Overrides:
-
hashCodeв классеObject - Returns:
- значение хэш-кода для этого объекта.
- See Also:
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