Spec-Zone.ru › OpenJDK 24

Интерфейс ConstantDesc

Все известные подинтерфейсы:
ClassDesc, DirectMethodHandleDesc, MethodHandleDesc, MethodTypeDesc
public sealed interface ConstantDesc permits ClassDesc, MethodHandleDesc, MethodTypeDesc, Double, DynamicConstantDesc<T>, Float, Integer, Long, String
A номинальный дескриптор для загружаемого константного значения, как определено в JVMS 4.4. Такой дескриптор может быть разрешен с помощью resolveConstantDesc(MethodHandles.Lookup) для получения самого константного значения.

Имена классов в номинальном дескрипторе, как и имена классов в константном пуле файла класса, должны интерпретироваться относительно определённого загрузчика классов, который не является частью номинального дескриптора.

Статические константы, которые могут быть выражены напрямую в константном пуле (String, Integer, Long, Float и Double) реализуют ConstantDesc и служат номинальными дескрипторами для себя. Связываемые напрямую константы (Class, MethodType и MethodHandle) имеют соответствующие типы ConstantDesc: ClassDesc, MethodTypeDesc и MethodHandleDesc. Другие константы представлены подтипами DynamicConstantDesc.

API, выполняющие генерацию или парсинг байткода, рекомендуются использовать ConstantDesc для описания операнда инструкции ldc (включая динамические константы), статических аргументов инициализации динамических констант и инструкций invokedynamic, а также других байткодов или структур файлов классов, использующих константный пул.

Константы, описывающие различные общие константы (например, экземпляры ClassDesc для типов платформы) можно найти в ConstantDescs.

Реализации ConstantDesc должны быть неизменяемыми, и их поведение не должно зависеть от идентификатора объекта.

Классы, не относящиеся к платформе, не должны реализовывать ConstantDesc напрямую. Вместо этого они должны расширять DynamicConstantDesc (как Enum.EnumDesc и VarHandle.VarHandleDesc).

Номинальные дескрипторы должны сравниваться с помощью метода Object.equals(Object). Нет гарантии, что любой конкретный объект всегда будет представлен одним и тем же экземпляром дескриптора.

См. Спецификацию виртуальной машины Java:
4.4 Константный пул
Граф иерархии класса (sealed):
Sealed class hierarchy graph for ConstantDescSealed class hierarchy graph for ConstantDesc
С:
12
См. также:
  • Constable
  • ConstantDescs

Краткое описание методов

Модификатор и тип Метод Описание
Object resolveConstantDesc(MethodHandles.Lookup lookup)
Разрешает этот дескриптор рефлективно, имитируя поведение разрешения JVMS 5.4.3 и поведение контроля доступа JVMS 5.4.4.

Подробное описание методов

resolveConstantDesc

Object resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
Разрешает этот дескриптор рефлективно, имитируя поведение разрешения JVMS 5.4.3 и поведение контроля доступа JVMS 5.4.4. Контекст разрешения и контроля доступа предоставляется параметром MethodHandles.Lookup. Кэширование результирующего значения не выполняется.
Примечание API:
Некоторые дескрипторы констант, такие как MethodTypeDesc, могут представлять значение, которое не может быть представлено сущностями во время выполнения. Попытки разрешения таких дескрипторов могут привести к ошибкам.
Параметры:
lookup - MethodHandles.Lookup для предоставления контекста разрешения имен и контроля доступа
Возвращает:
разрешенное константное значение
Исключения:
ReflectiveOperationException - если класс, метод или поле не могут быть разрешены рефлективно в ходе разрешения
LinkageError - если происходит ошибка связи
См. Спецификацию виртуальной машины Java:
5.4.3 Разрешение
5.4.4 Контроль доступа

© 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/ConstantDesc.html

Spec-Zone.ru

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