Класс ConstantBootstraps

public final class ConstantBootstraps
extends Object

Методы инициализации для динамически вычисляемых констант.

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

Since:
11

Конструкторы

Конструктор Описание
ConstantBootstraps()

Методы

Модификатор и тип Метод Описание
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)

Возвращает константу типа, указанного type, с именем, указанным name.

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)

Возвращает ссылку на объект типа 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 для статического поля.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

ConstantBootstraps

public ConstantBootstraps()

Методы

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(java.lang.invoke.MethodType), для корректировки типа возврата до желаемого типа.

Параметры:
lookup - не используется
name - не используется
type - желаемый тип значения, которое должно быть совместимо с типом возврата обработчика метода
handle - обработчик метода, который нужно вызвать
args - аргументы, которые нужно передать обработчику метода, как если бы с помощью MethodHandle.invokeWithArguments(java.lang.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

© 1993, 2020, 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/11/docs/api/java.base/java/lang/invoke/ConstantBootstraps.html

Spec-Zone .ru
спецификации, руководства, описания, API