Spec-Zone.ru › OpenJDK 27

Класс ConstantBootstraps

java.lang.Object
java.lang.invoke.ConstantBootstraps
public final class ConstantBootstraps extends Object
Методы начальной загрузки для динамически вычисляемых констант.

Методы начальной загрузки в этом классе выбрасывают NullPointerException для любого аргумента-ссылки, который является null, если только не указано, что аргумент не используется или принимает значение null.

Начиная с:
11

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

Модификатор и тип Метод Описание
static VarHandle arrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass)
Находит VarHandle для типа массива.
static <E extends Enum<E>>
E
enumConstant(MethodHandles.Lookup lookup, String name, Class<E> type)
Возвращает константу enum типа, заданного параметром type, с именем, заданным параметром name.
static Object explicitCast(MethodHandles.Lookup lookup, String name, Class<?> dstType, Object value)
Выполняет преобразование исходного типа в целевой тип.
static VarHandle fieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType)
Находит VarHandle для поля экземпляра.
static Object getStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type)
Возвращает значение статического поля final, объявленного в классе, который совпадает с типом поля (или, для полей примитивного типа, объявленного в классе-оболочке).
static Object getStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type, Class<?> declaringClass)
Возвращает значение статического поля final.
static Object invoke(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args)
Возвращает результат вызова дескриптора метода с указанными аргументами.
static Object nullConstant(MethodHandles.Lookup lookup, String name, Class<?> type)
Возвращает ссылку на объект null для ссылочного типа, заданного параметром type.
static Class<?> primitiveClass(MethodHandles.Lookup lookup, String name, Class<?> type)
Возвращает зеркало Class для примитивного типа, дескриптор типа которого задан параметром name.
static VarHandle staticFieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType)
Находит VarHandle для статического поля.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому.
protected void finalize()
Устарело, будет удалено: этот элемент API планируется удалить в будущей версии.
Финализация устарела и планируется к удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

nullConstant

public static Object nullConstant(MethodHandles.Lookup lookup, String name, Class<?> type)
Возвращает ссылку на объект null для ссылочного типа, заданного параметром type.
Параметры:
lookup — не используется
name — не используется
type — ссылочный тип
Возвращает:
значение null
Выбрасывает:
IllegalArgumentException — если type не является ссылочным типом

primitiveClass

public static Class<?> primitiveClass(MethodHandles.Lookup lookup, String name, Class<?> type)
Возвращает зеркало Class для примитивного типа, дескриптор типа которого задан параметром name.
Параметры:
lookup — не используется
name — дескриптор (JVMS §4.3) требуемого примитивного типа
type — требуемый тип результата (должен быть Class.class)
Возвращает:
зеркало Class
Выбрасывает:
IllegalArgumentException — если имя не является дескриптором примитивного типа или тип не является Class.class

enumConstant

public static <E extends Enum<E>> E enumConstant(MethodHandles.Lookup lookup, String name, Class<E> type)
Возвращает константу enum типа, заданного параметром type, с именем, заданным параметром name.
Параметры типа:
E — тип перечисления, для которого требуется вернуть значение-константу
Параметры:
lookup — контекст поиска, описывающий класс, выполняющий операцию (обычно помещается в стек JVM)
name — имя возвращаемой константы, которое должно точно совпадать с одной из констант перечисления указанного типа.
type — объект Class, описывающий тип перечисления, для которого требуется вернуть константу
Возвращает:
константу указанного типа перечисления с указанным именем
Выбрасывает:
IllegalAccessError — если объявляющий класс или поле недоступны классу, выполняющему операцию
IllegalArgumentException — если указанный тип перечисления не содержит константы с указанным именем или указанный объект класса не представляет тип перечисления
См. также:
  • Enum.valueOf(Class, String)

getStaticFinal

public static Object getStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type, Class<?> declaringClass)
Возвращает значение статического поля final.
Параметры:
lookup — контекст поиска, описывающий класс, выполняющий операцию (обычно помещается в стек JVM)
name — имя поля
type — тип поля
declaringClass — класс, в котором объявлено поле
Возвращает:
значение поля
Выбрасывает:
IllegalAccessError — если объявляющий класс или поле недоступны классу, выполняющему операцию
NoSuchFieldError — если указанное поле не существует
IncompatibleClassChangeError — если указанное поле не является final

getStaticFinal

public static Object getStaticFinal(MethodHandles.Lookup lookup, String name, Class<?> type)
Возвращает значение статического поля final, объявленного в классе, совпадающем с типом поля (или, для полей примитивного типа, объявленного в классе-оболочке). Это упрощенная форма getStaticFinal(MethodHandles.Lookup, String, Class, Class) для случая, когда класс объявляет именованные константные экземпляры самого себя.
Параметры:
lookup — контекст поиска, описывающий класс, выполняющий операцию (обычно помещается в стек JVM)
name — имя поля
type — тип поля
Возвращает:
значение поля
Выбрасывает:
IllegalAccessError — если объявляющий класс или поле недоступны классу, выполняющему операцию
NoSuchFieldError — если указанное поле не существует
IncompatibleClassChangeError — если указанное поле не является final
См. также:
  • getStaticFinal(MethodHandles.Lookup, String, Class, Class)

invoke

public static Object invoke(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args) throws Throwable
Возвращает результат вызова дескриптора метода с переданными аргументами.

Этот метод работает так, как если бы вызываемый дескриптор метода был результатом адаптации заданного дескриптора с помощью MethodHandle.asType(MethodType) для приведения возвращаемого типа к требуемому типу.

Параметры:
lookup — не используется
name — не используется
type — требуемый тип возвращаемого значения, который должен быть совместим с типом возвращаемого значения дескриптора метода
handle — вызываемый дескриптор метода
args — аргументы, передаваемые дескриптору метода, как при вызове MethodHandle.invokeWithArguments(Object...). Каждый аргумент может быть null.
Возвращает:
результат вызова дескриптора метода
Выбрасывает:
WrongMethodTypeException — если тип метода дескриптора нельзя адаптировать для приема заданного числа аргументов или если возвращаемый тип дескриптора нельзя привести к требуемому типу
ClassCastException — если аргумент или результат вызова дескриптора нельзя преобразовать приведением ссылочного типа
Throwable — любое исключение, выброшенное при вызове дескриптора метода

fieldVarHandle

public static VarHandle fieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType)
Находит VarHandle для поля экземпляра.
Параметры:
lookup — контекст поиска, описывающий класс, выполняющий операцию (обычно помещается в стек JVM)
name — имя поля
type — требуемый тип результата (должен быть Class<VarHandle>)
declaringClass — класс, в котором объявлено поле
fieldType — тип поля
Возвращает:
VarHandle
Выбрасывает:
IllegalAccessError — если объявляющий класс или поле недоступны классу, выполняющему операцию
NoSuchFieldError — если указанное поле не существует
IllegalArgumentException — если тип не является VarHandle

staticFieldVarHandle

public static VarHandle staticFieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType)
Находит VarHandle для статического поля.
Параметры:
lookup — контекст поиска, описывающий класс, выполняющий операцию (обычно помещается в стек JVM)
name — имя поля
type — требуемый тип результата (должен быть Class<VarHandle>)
declaringClass — класс, в котором объявлено поле
fieldType — тип поля
Возвращает:
VarHandle
Выбрасывает:
IllegalAccessError — если объявляющий класс или поле недоступны классу, выполняющему операцию
NoSuchFieldError — если указанное поле не существует
IllegalArgumentException — если тип не является VarHandle

arrayVarHandle

public static VarHandle arrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass)
Находит VarHandle для типа массива.
Параметры:
lookup — контекст поиска, описывающий класс, выполняющий операцию (обычно помещается в стек JVM)
name — не используется
type — требуемый тип результата (должен быть Class<VarHandle>)
arrayClass — тип массива
Возвращает:
VarHandle
Выбрасывает:
IllegalAccessError — если тип компонента массива недоступен классу, выполняющему операцию
IllegalArgumentException — если тип не является VarHandle

explicitCast

public static Object explicitCast(MethodHandles.Lookup lookup, String name, Class<?> dstType, Object value) throws ClassCastException
Выполняет преобразование исходного типа в целевой тип.

Для целевого типа dstType и входного значения value произойдет одно из следующего:

  • Если dstType является void.class, выбрасывается ClassCastException.
  • Если dstType является Object.class, value возвращается без изменений.

В противном случае к value применяется одно из следующих преобразований:

  1. Если dstType является ссылочным типом, к value применяется приведение ссылочного типа, как при вызове dstType.cast(value).
  2. В противном случае dstType является примитивным типом:
    1. Если value равно null, возвращается значение по умолчанию (JVMS §2.3) для dstType.
    2. Если тип времени выполнения value является типом-оболочкой примитива (например, Integer), выполняется распаковка Java (JLS §5.1.8).
      • Если тип времени выполнения — Boolean, результат распаковки преобразуется в int, где true становится 1, а false становится 0.
      Затем выполняется преобразование приведения типа Java (JLS §5.5):
      • Если dstType не является boolean, приведение выполняется непосредственно к dstType.
      • Если dstType является boolean, приведение выполняется к int, а результирующее значение boolean определяется проверкой того, равен ли младший бит приведенного int единице.
    3. В противном случае выбрасывается ClassCastException.

Результат совпадает с результатом выполнения следующего кода:

MethodHandle id = MethodHandles.identity(dstType);
MethodType mt = MethodType.methodType(dstType, Object.class);
MethodHandle conv = MethodHandles.explicitCastArguments(id, mt);
return conv.invoke(value);
Параметры:
lookup — не используется
name — не используется
dstType — целевой тип преобразования
value — преобразуемое значение, может быть null
Возвращает:
преобразованное значение
Выбрасывает:
ClassCastException — если dstType является void; если dstType является ссылочным типом и приведение ссылочного типа завершается неудачей; или если dstType является примитивным типом, а value — экземпляр ссылочного типа, не являющегося классом-оболочкой
Начиная с:
15

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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