Spec-Zone.ru › OpenJDK 25

Интерфейс MethodHandleDesc

Все суперинтерфейсы:
ConstantDesc
Все известные подинтерфейсы:
DirectMethodHandleDesc
public sealed interface MethodHandleDesc extends ConstantDesc permits DirectMethodHandleDesc (not exhaustive)
Номинальный дескриптор константы MethodHandle.
Граф иерархии запечатанных классов:
Sealed class hierarchy graph for MethodHandleDescSealed class hierarchy graph for MethodHandleDesc
Начиная с:
12

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

Модификатор и тип Метод Описание
default MethodHandleDesc asType(MethodTypeDesc type)
Возвращает MethodHandleDesc, описывающий этот дескриптор метода, адаптированный к другому типу, как если бы был вызван MethodHandle.asType(MethodType).
boolean equals(Object o)
Сравнивает указанный объект с этим дескриптором на равенство.
MethodTypeDesc invocationType()
Возвращает MethodTypeDesc, описывающий тип вызова дескриптора метода, описанного этим номинальным дескриптором.
static DirectMethodHandleDesc of(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, String lookupDescriptor)
Создает MethodHandleDesc, соответствующий вызову объявленного метода, вызову конструктора или доступу к полю.
static DirectMethodHandleDesc ofConstructor(ClassDesc owner, ClassDesc... paramTypes)
Возвращает MethodHandleDesc, соответствующий вызову конструктора
static DirectMethodHandleDesc ofField(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String fieldName, ClassDesc fieldType)
Создает MethodHandleDesc, соответствующий дескриптору метода, который обращается к полю.
static DirectMethodHandleDesc ofMethod(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, MethodTypeDesc lookupMethodType)
Создает MethodHandleDesc, соответствующий вызову объявленного метода или конструктора.
MethodHandle resolveConstantDesc(MethodHandles.Lookup lookup)
Разрешает этот дескриптор с помощью рефлексии, имитируя поведение разрешения JVMS 5.4.3 и поведение контроля доступа JVMS 5.4.4.

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

of

static DirectMethodHandleDesc of(DirectMethodHandleDesc.Kind kind, ClassDesc owner, String name, String lookupDescriptor)
Создает MethodHandleDesc, соответствующий вызову объявленного метода, вызову конструктора или доступу к полю.

Строка дескриптора поиска имеет тот же формат, что и для различных вариантов 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)
Создает MethodHandleDesc, соответствующий вызову объявленного метода или конструктора.

Строка дескриптора поиска имеет тот же формат, что и для методов поиска в 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)
Создает MethodHandleDesc, соответствующий дескриптору метода, который обращается к полю.
Параметры:
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)
Возвращает MethodHandleDesc, соответствующий вызову конструктора
Параметры:
owner — ClassDesc, описывающий класс, содержащий конструктор
paramTypes — ClassDesc, описывающие типы параметров конструктора
Возвращает:
MethodHandleDesc
Вызывает исключение:
NullPointerException — если любой аргумент или его содержимое равно null

asType

default MethodHandleDesc asType(MethodTypeDesc type)
Возвращает MethodHandleDesc, описывающий этот дескриптор метода, адаптированный к другому типу, как если бы был вызван MethodHandle.asType(MethodType).
Параметры:
type — MethodHandleDesc, описывающий новый тип метода
Возвращает:
MethodHandleDesc для адаптированного дескриптора метода
Вызывает исключение:
NullPointerException — если аргумент равен null

invocationType

MethodTypeDesc invocationType()
Возвращает MethodTypeDesc, описывающий тип вызова дескриптора метода, представленного этим номинальным дескриптором. Тип вызова описывает полный набор значений стека, потребляемых при вызове (включая получателя, если он есть).
Возвращает:
MethodHandleDesc, описывающий тип дескриптора метода

resolveConstantDesc

MethodHandle resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException
Описание скопировано из интерфейса: ConstantDesc
Разрешает этот дескриптор с помощью рефлексии, имитируя поведение разрешения JVMS 5.4.3 и поведение контроля доступа JVMS 5.4.4. Контекст разрешения и контроля доступа задается параметром MethodHandles.Lookup. Кэширование полученного значения не выполняется.
Определено в:
resolveConstantDesc в интерфейсе ConstantDesc
Параметры:
lookup — MethodHandles.Lookup, обеспечивающий контекст поиска имен и контроля доступа
Возвращает:
разрешенное значение константы
Вызывает исключение:
ReflectiveOperationException — если класс, метод или поле не удалось разрешить с помощью рефлексии в ходе разрешения
Начиная с:
21

equals

boolean equals(Object o)
Сравнивает указанный объект с этим дескриптором на равенство. Возвращает true тогда и только тогда, когда указанный объект также является MethodHandleDesc и оба объекта кодируют одно и то же номинальное описание дескриптора метода.
Переопределяет:
equals в классе Object
Параметры:
o — другой объект
Возвращает:
равен ли этот дескриптор другому объекту
См. также:
  • Object.hashCode()
  • HashMap

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/constant/MethodHandleDesc.html

Spec-Zone.ru

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