Интерфейс MethodHandleDesc
- Все суперинтерфейсы:
ConstantDesc
- Все известные подинтерфейсы:
DirectMethodHandleDesc
public sealed interface MethodHandleDesc extends ConstantDesc permits DirectMethodHandleDesc (not exhaustive)
MethodHandle.Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default MethodHandleDesc |
asType |
Возвращает MethodHandleDesc, описывающий этот обработчик методов, адаптированный к другому типу, как если бы он был изменён с помощью MethodHandle.asType(MethodType). |
boolean |
equals |
Сравнивает указанный объект с этим дескриптором на равенство. |
MethodTypeDesc |
invocationType() |
Возвращает MethodTypeDesc, описывающий тип вызова обработчика методов, описанного этим номинальным дескриптором. |
static DirectMethodHandleDesc |
of |
Создаёт MethodHandleDesc, соответствующий вызову объявленного метода, вызову конструктора или доступу к полю. |
static DirectMethodHandleDesc |
ofConstructor |
Возвращает MethodHandleDesc, соответствующий вызову конструктора. |
static DirectMethodHandleDesc |
ofField |
Создаёт MethodHandleDesc, соответствующий обработчику методов, который обращается к полю. |
static DirectMethodHandleDesc |
ofMethod |
Создаёт MethodHandleDesc, соответствующий вызову объявленного метода или конструктора. |
MethodHandle |
resolveConstantDesc |
Подробное описание методов
of
static DirectMethodHandleDesc of(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, String lookupDescriptor)
Строка-описатель поиска имеет тот же формат, что и для различных вариантов CONSTANT_MethodHandle_info и для методов поиска в MethodHandles.Lookup. Для вызова метода или конструктора она интерпретируется как описание типа метода; для доступа к полю — как описание поля. Если kind равно CONSTRUCTOR, параметр name игнорируется, и тип возвращаемого значения в описателе поиска должен быть void. Если kind соответствует виртуальному вызову метода, тип поиска включает параметры метода, но не тип получателя.
- Параметры:
-
kind— вид обрабатываемого методом объекта -
owner—ClassDesc, описывающий класс, содержащий метод, конструктор или поле -
name— неофициальное имя метода или поля (игнорируется, еслиkindравноCONSTRUCTOR) -
lookupDescriptor— строка-описание типа поиска, если запрос относится к вызову метода, или описание типа вызова, если запрос относится к полю или конструктору - Возвращает:
- объект MethodHandleDesc
- Исключения:
-
NullPointerException— если любой из аргументов, которые не игнорируются, равен null -
IllegalArgumentException— если строка-описатель не является допустимым описанием метода или поля - См. Спецификацию виртуальной машины Java:
- 4.4.8 Структура CONSTANT_MethodHandle_info
4.2.2 Неофициальные имена
4.3.2 Описания полей
4.3.3 Описания методов
ofMethod
static DirectMethodHandleDesc ofMethod(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, MethodTypeDesc lookupMethodType)
Строка-описатель поиска имеет тот же формат, что и для методов поиска в MethodHandles.Lookup. Если kind равно CONSTRUCTOR, имя игнорируется, и тип возвращаемого значения в типе поиска должен быть void. Если kind соответствует виртуальному вызову метода, тип поиска включает параметры метода, но не тип получателя.
- Параметры:
-
kind— вид обрабатываемого методом объекта; должен быть одним изSPECIAL, VIRTUAL, STATIC, INTERFACE_SPECIAL, INTERFACE_VIRTUAL, INTERFACE_STATIC, CONSTRUCTOR -
owner—ClassDesc, описывающий класс, содержащий метод или конструктор -
name— неофициальное имя метода (игнорируется, еслиkindравноCONSTRUCTOR) -
lookupMethodType—MethodTypeDesc, описывающий тип поиска - Возвращает:
- объект MethodHandleDesc
- Исключения:
-
NullPointerException— если любой из аргументов, которые не игнорируются, равен null -
IllegalArgumentException— если уnameнеправильный формат или вид неверный - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неофициальные имена
ofField
static DirectMethodHandleDesc ofField(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String fieldName, ClassDesc fieldType)
- Параметры:
-
kind— вид обрабатываемого методом объекта; должен быть одним изGETTER,SETTER,STATIC_GETTERилиSTATIC_SETTER -
owner—ClassDesc, описывающий класс, содержащий поле -
fieldName— неофициальное имя поля -
fieldType—ClassDesc, описывающий тип поля - Возвращает:
- объект MethodHandleDesc
- Исключения:
-
NullPointerException— если любой из аргументов равен null -
IllegalArgumentException— еслиkindне имеет одного из допустимых значений или имя поля неверно - См. Спецификацию виртуальной машины Java:
- 4.2.2 Неофициальные имена
ofConstructor
static DirectMethodHandleDesc ofConstructor(ClassDesc owner, ClassDesc... paramTypes)
- Параметры:
-
owner—ClassDesc, описывающий класс, содержащий конструктор -
paramTypes—ClassDescs, описывающие типы параметров конструктора - Возвращает:
- объект MethodHandleDesc
- Исключения:
-
NullPointerException— если любой аргумент или его содержимое равноnull
asType
default MethodHandleDesc asType(MethodTypeDesc type)
MethodHandle.asType(MethodType).- Параметры:
-
type—MethodHandleDesc, описывающий новый тип метода - Возвращает:
- объект MethodHandleDesc для адаптированного обработчика методов
- Исключения:
-
NullPointerException— если аргумент равенnull
invocationType
MethodTypeDesc invocationType()
MethodTypeDesc, описывающий тип вызова обработчика методов, описанного этим номинальным описателем. Тип вызова описывает полный набор стековых значений, потребляемых вызовом (включая получателя, если таковой имеется).- Возвращает:
- объект MethodHandleDesc, описывающий тип обработчика методов
resolveConstantDesc
MethodHandle resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
ConstantDescMethodHandles.Lookup. Кэширование полученного значения не производится.- Определено в:
-
resolveConstantDescв интерфейсеConstantDesc - Параметры:
-
lookup—MethodHandles.Lookupдля предоставления контекста разрешения имени и контроля доступа - Возвращает:
- разрешенное значение константы
- Исключения:
-
ReflectiveOperationException— если класс, метод или поле не удалось разрешить рефлективно в процессе разрешения - C тех пор как:
- 21
equals
boolean equals(Object o)
true тогда и только тогда, когда указанный объект также является MethodHandleDesc и оба кодируют одинаковое номинальное описание обработчика методов.
© 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/MethodHandleDesc.html