Интерфейс MethodHandleDesc
- Все суперинтерфейсы:
ConstantDesc
- Все известные подинтерфейсы:
DirectMethodHandleDesc
public sealed interface MethodHandleDesc extends ConstantDesc permits DirectMethodHandleDesc (not exhaustive)
MethodHandle.- С:
- 12
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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 The CONSTANT_MethodHandle_info Structure
4.2.2 Unqualified Names
4.3.2 Field Descriptors
4.3.3 Method Descriptors
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 Unqualified Names
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 Unqualified Names
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- если класс, метод или поле не удалось разрешить рефлексивно в процессе разрешения
equals
boolean equals(Object o)
true тогда и только тогда, когда указанный объект также является MethodHandleDesc, и оба кодируют то же номинальное описание обработчика метода.- Переопределяет:
-
equalsв классеObject - Параметры:
-
o- другой объект - Возвращает:
- является ли этот дескриптор равным другому объекту
- См. также:
© 1993, 2023, 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/21/docs/api/java.base/java/lang/constant/MethodHandleDesc.html