Класс 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() |
Возвращает аргументы bootstrap для этой константы. |
List |
bootstrapArgsList() |
Возвращает аргументы bootstrap для этой константы в виде неизменяемого List. |
DirectMethodHandleDesc |
bootstrapMethod() |
Возвращает MethodHandleDesc, описывающий метод bootstrap для этой константы. |
String |
constantName() |
Возвращает имя, которое отображалось бы в операнде NameAndType для LDC этой константы. |
ClassDesc |
constantType() |
Возвращает ClassDesc, описывающий тип, который отображался бы в операнде NameAndType для LDC этой константы. |
final boolean |
equals |
Сравнивает указанный объект с этим дескриптором на равенство. |
final int |
hashCode() |
Возвращает хеш-код этого объекта. |
static <T> DynamicConstantDesc |
of |
Возвращает номинальный дескриптор динамической константы без статических аргументов bootstrap, с параметром имени ConstantDescs.DEFAULT_NAME и параметром типа, всегда совпадающим с типом возвращаемого значения метода bootstrap. |
static <T> DynamicConstantDesc |
of |
Возвращает номинальный дескриптор динамической константы с параметром имени ConstantDescs.DEFAULT_NAME и параметром типа, всегда совпадающим с типом возвращаемого значения метода bootstrap. |
static <T> ConstantDesc |
ofCanonical |
Возвращает номинальный дескриптор динамической константы, преобразуя его в более конкретный тип, если bootstrap константы является известным, а более конкретный тип номинального дескриптора (например, ClassDesc) доступен. |
static <T> DynamicConstantDesc |
ofNamed |
Возвращает номинальный дескриптор динамической константы. |
T |
resolveConstantDesc |
|
String |
toString() |
Возвращает краткое текстовое описание этого описания константы, включая метод bootstrap, имя и тип константы, а также статические аргументы bootstrap. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате уведомления или прерывания, либо до истечения определенного промежутка реального времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате уведомления или прерывания, либо до истечения определенного промежутка реального времени. |
Подробное описание конструкторов
DynamicConstantDesc
protected DynamicConstantDesc(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)
- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий метод bootstrap константы -
constantName— неквалифицированное имя, которое отображалось бы в операндеNameAndTypeдляLDCэтой константы -
constantType—ClassDesc, описывающий тип, который отображался бы в операндеNameAndTypeдляLDCэтой константы -
bootstrapArgs—ConstantDescs, описывающие статические аргументы bootstrap, которые отображались бы в атрибуте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 с известным bootstrap, сюда входят Class (для экземпляров, описывающих примитивные типы), Enum и VarHandle.
API для чтения байт-кода, обрабатывающие пул констант и предоставляющие вызывающему коду его элементы в виде ConstantDesc, обычно должны использовать этот метод вместо ofNamed(DirectMethodHandleDesc, String, ClassDesc, ConstantDesc...), поскольку он может вернуть более конкретный тип, который можно предоставить вызывающему коду.
- Параметры типа:
T— тип динамической константы- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий метод bootstrap константы -
constantName— неквалифицированное имя, которое отображалось бы в операндеNameAndTypeдляLDCэтой константы -
constantType—ClassDesc, описывающий тип, который отображался бы в операндеNameAndTypeдляLDCэтой константы -
bootstrapArgs—ConstantDescs, описывающие статические аргументы bootstrap, которые отображались бы в атрибуте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, описывающий метод bootstrap константы -
constantName— неквалифицированное имя, которое отображалось бы в операндеNameAndTypeдляLDCэтой константы -
constantType—ClassDesc, описывающий тип, который отображался бы в операндеNameAndTypeдляLDCэтой константы -
bootstrapArgs—ConstantDescs, описывающие статические аргументы bootstrap, которые отображались бы в атрибутеBootstrapMethods - Возвращает:
- номинальный дескриптор
- Исключения:
-
NullPointerException— если какой-либо аргумент равен null -
IllegalArgumentException— еслиnameимеет неверный формат - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неквалифицированные имена
of
public static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod, ConstantDesc... bootstrapArgs)
ConstantDescs.DEFAULT_NAME и параметром типа, всегда совпадающим с типом возвращаемого значения метода bootstrap.- Параметры типа:
T— тип динамической константы- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий метод bootstrap константы -
bootstrapArgs—ConstantDescs, описывающие статические аргументы bootstrap, которые отображались бы в атрибутеBootstrapMethods - Возвращает:
- номинальный дескриптор
- Исключения:
-
NullPointerException— если какой-либо аргумент равен null - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неквалифицированные имена
of
public static <T> DynamicConstantDesc<T> of(DirectMethodHandleDesc bootstrapMethod)
ConstantDescs.DEFAULT_NAME и параметром типа, всегда совпадающим с типом возвращаемого значения метода bootstrap.- Параметры типа:
T— тип динамической константы- Параметры:
-
bootstrapMethod—DirectMethodHandleDesc, описывающий метод bootstrap константы - Возвращает:
- номинальный дескриптор
- Исключения:
-
NullPointerException— если какой-либо аргумент равен null
constantName
public String constantName()
NameAndType для LDC этой константы.- Возвращает:
- имя константы
constantType
public ClassDesc constantType()
ClassDesc, описывающий тип, который отображался бы в операнде NameAndType для LDC этой константы.- Возвращает:
- тип константы
bootstrapMethod
public DirectMethodHandleDesc bootstrapMethod()
MethodHandleDesc, описывающий метод bootstrap этой константы.- Возвращает:
- метод bootstrap
bootstrapArgs
public ConstantDesc[] bootstrapArgs()
- Возвращает:
- аргументы bootstrap
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, а дескрипторы имеют одинаковые методы bootstrap, списки аргументов bootstrap, имена констант и типы констант.hashCode
public final int hashCode()
ObjectHashMap. Общий контракт метода hashCode таков:
- Если метод вызывается для одного и того же объекта более одного раза в ходе выполнения приложения Java, метод
hashCodeдолжен каждый раз возвращать одно и то же целое число, при условии что сведения, используемые при сравнении объектов с помощьюequals, не изменялись. Это целое число не обязано оставаться неизменным при разных запусках одного и того же приложения. - Если два объекта равны согласно методу
equals, вызов методаhashCodeдля каждого из этих объектов должен возвращать одинаковый результат. - Не требуется, чтобы вызов метода
hashCodeдля двух объектов, не равных согласно методуequals, возвращал разные целые числа. Однако программисту следует учитывать, что разные результаты для неравных объектов могут повысить производительность хеш-таблиц.
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.