Интерфейс 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—ClassDesc, описывающие типы параметров конструктора - Возвращает:
- 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— если класс, метод или поле не удалось разрешить с помощью рефлексии в ходе разрешения - Начиная с:
- 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/constant/MethodHandleDesc.html