Spec-Zone.ru › OpenJDK 27

Класс MethodType

java.lang.Object
java.lang.invoke.MethodType
Все реализованные интерфейсы:
Serializable, Constable, TypeDescriptor, TypeDescriptor.OfMethod<Class<?>, MethodType>
public final class MethodType extends Object implements Constable, TypeDescriptor.OfMethod<Class<?>, MethodType>, Serializable
Тип метода представляет аргументы и возвращаемое значение, принимаемые и возвращаемые дескриптором метода, либо аргументы и возвращаемое значение, передаваемые вызывающим кодом дескриптора метода и ожидаемые им. Типы методов должны точно соответствовать друг другу для дескриптора метода и всех вызывающих его объектов; операции JVM обеспечивают это соответствие, в частности при вызовах MethodHandle.invokeExact и MethodHandle.invoke, а также при выполнении инструкций invokedynamic.

Структура состоит из типа возвращаемого значения и любого количества типов параметров. Типы (примитивные, void и ссылочные) представлены объектами Class. (Для простоты изложения мы рассматриваем void как тип. Фактически он обозначает отсутствие возвращаемого типа.)

Все экземпляры MethodType неизменяемы. Два экземпляра полностью взаимозаменяемы, если они равны. Равенство зависит только от попарного соответствия типов возвращаемого значения и параметров.

Этот тип можно создать только с помощью фабричных методов. Все фабричные методы могут кэшировать значения, хотя кэширование не гарантируется. Некоторые фабричные методы являются статическими, а другие — виртуальными методами, которые изменяют исходные типы методов, например меняя выбранный параметр.

Фабричные методы, работающие с группами типов параметров, систематически представлены в двух версиях, чтобы для работы с группами типов параметров можно было использовать как массивы Java, так и списки Java. Методы запросов parameterArray и parameterList также позволяют выбирать между массивами и списками.

Объекты MethodType иногда формируются из инструкций байт-кода, таких как invokedynamic, а именно из строк дескрипторов типов, связанных с инструкциями в пуле констант файла класса.

Как и классы со строками, типы методов также могут быть представлены непосредственно в пуле констант файла класса в виде констант. Тип метода можно загрузить инструкцией ldc, ссылающейся на соответствующую запись пула констант CONSTANT_MethodType. Эта запись ссылается на написание CONSTANT_Utf8 строки дескриптора. (Полные сведения о константах типов методов см. в разделах §4.4.8 и §5.4.3.5 Спецификации виртуальной машины Java.)

Когда JVM материализует MethodType из строки дескриптора, все классы, указанные в дескрипторе, должны быть доступны и будут загружены. (Однако классы не обязательно инициализировать, в отличие от случая с CONSTANT_Class.) Эта загрузка может произойти в любой момент до того, как объект MethodType будет впервые получен.

Номинальные дескрипторы

MethodType можно описать в номинальной форме тогда и только тогда, когда все типы параметров и возвращаемый тип можно описать с помощью nominal descriptor, представленного объектом ClassDesc. Если тип метода можно описать номинально, то:

  • Тип метода имеет nominal descriptor, возвращаемый методом MethodType::describeConstable.
  • Строка дескриптора, возвращаемая методом MethodType::descriptorString или MethodType::toMethodDescriptorString для типа метода, является дескриптором метода (JVMS §4.3.3).

Если какой-либо из типов параметров или возвращаемый тип нельзя описать номинально, то есть Class::describeConstable возвращает пустой Optional для этого типа, тип метода нельзя описать номинально:

  • Тип метода не имеет nominal descriptor, а MethodType::describeConstable возвращает пустой Optional.
  • Строка дескриптора, возвращаемая методом MethodType::descriptorString или MethodType::toMethodDescriptorString для типа метода, не является дескриптором типа.
Начиная с:
1.7
См. также:
  • Сериализованная форма

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе TypeDescriptor

TypeDescriptor.OfField<F>, TypeDescriptor.OfMethod<F,M>
Модификатор и тип Интерфейс Описание
static interface  TypeDescriptor.OfField<F extends TypeDescriptor.OfField<F>>
Сущность, имеющая дескриптор типа поля.
static interface  TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>, M extends TypeDescriptor.OfMethod<F,M>>
Сущность, имеющая дескриптор типа метода. Дескрипторы методов, соответствующие JVMS §4.3.3, можно описать номинально с помощью MethodType::describeConstable; в противном случае их нельзя описать номинально.

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

Модификатор и тип Метод Описание
MethodType appendParameterTypes(Class<?>... ptypesToInsert)
Находит или создает тип метода с дополнительными типами параметров.
MethodType appendParameterTypes(List<Class<?>> ptypesToInsert)
Находит или создает тип метода с дополнительными типами параметров.
MethodType changeParameterType(int num, Class<?> nptype)
Находит или создает тип метода с одним отличающимся типом параметра.
MethodType changeReturnType(Class<?> nrtype)
Находит или создает тип метода с другим возвращаемым типом.
Optional<MethodTypeDesc> describeConstable()
Возвращает номинальный дескриптор для этого экземпляра, если его можно создать, или пустой Optional, если создать его нельзя.
String descriptorString()
Возвращает строку дескриптора для этого типа метода.
MethodType dropParameterTypes(int start, int end)
Находит или создает тип метода с пропущенными типами некоторых параметров.
boolean equals(Object x)
Сравнивает указанный объект с этим типом на равенство.
MethodType erase()
Стирает все ссылочные типы до Object.
static MethodType fromMethodDescriptorString(String descriptor, ClassLoader loader)
Находит или создает экземпляр типа метода, заданного дескриптором метода (JVMS §4.3.3).
MethodType generic()
Преобразует все типы, как ссылочные, так и примитивные, в Object.
static MethodType genericMethodType(int objectArgCount)
Находит или создает тип метода, все компоненты которого являются Object.
static MethodType genericMethodType(int objectArgCount, boolean finalArray)
Находит или создает тип метода, компоненты которого являются Object, с необязательным завершающим массивом Object[].
int hashCode()
Возвращает значение хеш-кода для этого типа метода.
boolean hasPrimitives()
Сообщает, содержит ли этот тип примитивный аргумент или возвращаемое значение.
boolean hasWrappers()
Сообщает, содержит ли этот тип аргумент или возвращаемое значение-оболочку.
MethodType insertParameterTypes(int num, Class<?>... ptypesToInsert)
Находит или создает тип метода с дополнительными типами параметров.
MethodType insertParameterTypes(int num, List<Class<?>> ptypesToInsert)
Находит или создает тип метода с дополнительными типами параметров.
Class<?> lastParameterType()
Возвращает тип последнего параметра этого типа метода.
static MethodType methodType(Class<?> rtype)
Находит или создает тип метода с заданными компонентами.
static MethodType methodType(Class<?> rtype, Class<?> ptype0)
Находит или создает тип метода с заданными компонентами.
static MethodType methodType(Class<?> rtype, Class<?>[] ptypes)
Находит или создает экземпляр заданного типа метода.
static MethodType methodType(Class<?> rtype, Class<?> ptype0, Class<?>... ptypes)
Находит или создает тип метода с заданными компонентами.
static MethodType methodType(Class<?> rtype, MethodType ptypes)
Находит или создает тип метода с заданными компонентами.
static MethodType methodType(Class<?> rtype, List<Class<?>> ptypes)
Находит или создает тип метода с заданными компонентами.
Class<?>[] parameterArray()
Представляет типы параметров в виде массива (вспомогательный метод).
int parameterCount()
Возвращает количество типов параметров в этом типе метода.
List<Class<?>> parameterList()
Представляет типы параметров в виде списка (вспомогательный метод).
Class<?> parameterType(int num)
Возвращает тип параметра с указанным индексом в этом типе метода.
Class<?> returnType()
Возвращает тип возвращаемого значения этого типа метода.
String toMethodDescriptorString()
Возвращает строку дескриптора для этого типа метода.
String toString()
Возвращает строковое представление типа метода в форме "(PT0,PT1...)RT".
MethodType unwrap()
Преобразует все типы-оболочки в соответствующие примитивные типы.
MethodType wrap()
Преобразует все примитивные типы в соответствующие типы-оболочки.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

methodType

public static MethodType methodType(Class<?> rtype, Class<?>[] ptypes)
Находит или создает экземпляр заданного типа метода.
Параметры:
rtype — тип возвращаемого значения
ptypes — типы параметров
Возвращает:
тип метода с заданными компонентами
Исключения:
NullPointerException — если rtype или ptypes либо любой элемент ptypes равен null
IllegalArgumentException — если любой элемент ptypes равен void.class

methodType

public static MethodType methodType(Class<?> rtype, List<Class<?>> ptypes)
Находит или создает тип метода с заданными компонентами. Вспомогательный метод для methodType.
Параметры:
rtype — тип возвращаемого значения
ptypes — типы параметров
Возвращает:
тип метода с заданными компонентами
Исключения:
NullPointerException — если rtype или ptypes либо любой элемент ptypes равен null
IllegalArgumentException — если любой элемент ptypes равен void.class

methodType

public static MethodType methodType(Class<?> rtype, Class<?> ptype0, Class<?>... ptypes)
Находит или создает тип метода с заданными компонентами. Вспомогательный метод для methodType. Первый тип параметра добавляется перед остальными элементами массива.
Параметры:
rtype — тип возвращаемого значения
ptype0 — тип первого параметра
ptypes — типы остальных параметров
Возвращает:
тип метода с заданными компонентами
Исключения:
NullPointerException — если rtype или ptype0, или ptypes, или любой элемент ptypes равен null
IllegalArgumentException — если ptype0 или ptypes, или любой элемент ptypes равен void.class

methodType

public static MethodType methodType(Class<?> rtype)
Находит или создает тип метода с заданными компонентами. Вспомогательный метод для methodType. Полученный метод не имеет типов параметров.
Параметры:
rtype — тип возвращаемого значения
Возвращает:
тип метода с заданным возвращаемым значением
Исключения:
NullPointerException — если rtype равен null

methodType

public static MethodType methodType(Class<?> rtype, Class<?> ptype0)
Находит или создает тип метода с заданными компонентами. Вспомогательный метод для methodType. Полученный метод имеет указанный тип единственного параметра.
Параметры:
rtype — тип возвращаемого значения
ptype0 — тип параметра
Возвращает:
тип метода с заданными возвращаемым значением и типом параметра
Исключения:
NullPointerException — если rtype или ptype0 равен null
IllegalArgumentException — если ptype0 равен void.class

methodType

public static MethodType methodType(Class<?> rtype, MethodType ptypes)
Находит или создает тип метода с заданными компонентами. Вспомогательный метод для methodType. Полученный метод имеет те же типы параметров, что и ptypes, и указанный тип возвращаемого значения.
Параметры:
rtype — тип возвращаемого значения
ptypes — тип метода, задающий типы параметров
Возвращает:
тип метода с заданными компонентами
Исключения:
NullPointerException — если rtype или ptypes равен null

genericMethodType

public static MethodType genericMethodType(int objectArgCount, boolean finalArray)
Находит или создает тип метода, компоненты которого — Object, с необязательным завершающим массивом Object[]. Вспомогательный метод для methodType. Все параметры и тип возвращаемого значения будут иметь тип Object, за исключением последнего параметра-массива, если он есть: его тип будет Object[].
Параметры:
objectArgCount — количество параметров (не включая завершающий параметр-массив, если он есть)
finalArray — наличие завершающего параметра-массива типа Object[]
Возвращает:
универсально применимый тип метода для всех вызовов с заданным фиксированным количеством аргументов и собранным массивом дополнительных аргументов
Исключения:
IllegalArgumentException — если objectArgCount отрицательно или превышает 255 (или 254, если finalArray равно true)
См. также:
  • genericMethodType(int)

genericMethodType

public static MethodType genericMethodType(int objectArgCount)
Находит или создает тип метода, все компоненты которого имеют тип Object. Вспомогательный метод для methodType. Все параметры и тип возвращаемого значения будут иметь тип Object.
Параметры:
objectArgCount — количество параметров
Возвращает:
универсально применимый тип метода для всех вызовов с заданным количеством аргументов
Исключения:
IllegalArgumentException — если objectArgCount отрицательно или превышает 255
См. также:
  • genericMethodType(int, boolean)

changeParameterType

public MethodType changeParameterType(int num, Class<?> nptype)
Находит или создает тип метода с единственным измененным типом параметра. Вспомогательный метод для methodType.
Указано в:
changeParameterType в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Параметры:
num — индекс (начиная с нуля) изменяемого типа параметра
nptype — новый тип параметра, заменяющий прежний
Возвращает:
тот же тип, но с измененным выбранным параметром
Исключения:
IndexOutOfBoundsException — если num не является допустимым индексом в parameterArray()
IllegalArgumentException — если nptype равен void.class
NullPointerException — если nptype равен null

insertParameterTypes

public MethodType insertParameterTypes(int num, Class<?>... ptypesToInsert)
Находит или создает тип метода с дополнительными типами параметров. Вспомогательный метод для methodType.
Указано в:
insertParameterTypes в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Параметры:
num — позиция (начиная с нуля), в которую вставляется тип или типы параметров
ptypesToInsert — ноль или более новых типов параметров для вставки в список параметров
Возвращает:
тот же тип, но с вставленными выбранными параметрами
Исключения:
IndexOutOfBoundsException — если num отрицательно или превышает parameterCount()
IllegalArgumentException — если любой элемент ptypesToInsert равен void.class или результирующий тип метода будет иметь более 255 слотов параметров
NullPointerException — если ptypesToInsert или любой из его элементов равен null

appendParameterTypes

public MethodType appendParameterTypes(Class<?>... ptypesToInsert)
Находит или создает тип метода с дополнительными типами параметров. Вспомогательный метод для methodType.
Параметры:
ptypesToInsert — ноль или более новых типов параметров для вставки в конец списка параметров
Возвращает:
тот же тип, но с добавленными выбранными параметрами
Исключения:
IllegalArgumentException — если любой элемент ptypesToInsert равен void.class или результирующий тип метода будет иметь более 255 слотов параметров
NullPointerException — если ptypesToInsert или любой из его элементов равен null

insertParameterTypes

public MethodType insertParameterTypes(int num, List<Class<?>> ptypesToInsert)
Находит или создает тип метода с дополнительными типами параметров. Вспомогательный метод для methodType.
Параметры:
num — позиция (начиная с нуля), в которую вставляется тип или типы параметров
ptypesToInsert — ноль или более новых типов параметров для вставки в список параметров
Возвращает:
тот же тип, но с вставленными выбранными параметрами
Исключения:
IndexOutOfBoundsException — если num отрицательно или превышает parameterCount()
IllegalArgumentException — если любой элемент ptypesToInsert равен void.class или результирующий тип метода будет иметь более 255 слотов параметров
NullPointerException — если ptypesToInsert или любой из его элементов равен null

appendParameterTypes

public MethodType appendParameterTypes(List<Class<?>> ptypesToInsert)
Находит или создает тип метода с дополнительными типами параметров. Вспомогательный метод для methodType.
Параметры:
ptypesToInsert — ноль или более новых типов параметров для вставки в конец списка параметров
Возвращает:
тот же тип, но с добавленными выбранными параметрами
Исключения:
IllegalArgumentException — если любой элемент ptypesToInsert равен void.class или результирующий тип метода будет иметь более 255 слотов параметров
NullPointerException — если ptypesToInsert или любой из его элементов равен null

dropParameterTypes

public MethodType dropParameterTypes(int start, int end)
Находит или создает тип метода, в котором отсутствуют некоторые типы параметров. Вспомогательный метод для methodType.
Указано в:
dropParameterTypes в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Параметры:
start — индекс (начиная с нуля) первого удаляемого типа параметра
end — индекс (больше start) первого типа параметра, который не следует удалять
Возвращает:
тот же тип, но с удаленными выбранными параметрами
Исключения:
IndexOutOfBoundsException — если start отрицательно или превышает parameterCount(), или если end отрицательно или превышает parameterCount(), или если start превышает end

changeReturnType

public MethodType changeReturnType(Class<?> nrtype)
Находит или создает тип метода с другим типом возвращаемого значения. Вспомогательный метод для methodType.
Указано в:
changeReturnType в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Параметры:
nrtype — тип возвращаемого параметра, заменяющий прежний
Возвращает:
тот же тип, но с измененным типом возвращаемого значения
Исключения:
NullPointerException — если nrtype равен null

hasPrimitives

public boolean hasPrimitives()
Сообщает, содержит ли этот тип примитивный аргумент или возвращаемое значение. Тип возвращаемого значения void считается примитивным.
Возвращает:
true, если хотя бы один из типов является примитивным

hasWrappers

public boolean hasWrappers()
Сообщает, содержит ли этот тип аргумент или возвращаемое значение-оболочку. Типы-оболочки упаковывают примитивные значения, например Integer. Ссылочный тип java.lang.Void считается типом-оболочкой, если он используется как тип возвращаемого значения.
Возвращает:
true, если хотя бы один из типов является типом-оболочкой

erase

public MethodType erase()
Заменяет все ссылочные типы на Object. Вспомогательный метод для methodType. Все примитивные типы (включая void) останутся без изменений.
Возвращает:
версию исходного типа, в которой заменены все ссылочные типы

generic

public MethodType generic()
Преобразует все типы — ссылочные и примитивные — в Object. Вспомогательный метод для genericMethodType. Выражение type.wrap().erase() возвращает то же значение, что и type.generic().
Возвращает:
версию исходного типа, в которой заменены все типы

wrap

public MethodType wrap()
Преобразует все примитивные типы в соответствующие типы-оболочки. Вспомогательный метод для methodType. Все ссылочные типы (включая типы-оболочки) останутся без изменений. Тип возвращаемого значения void изменяется на тип java.lang.Void. Выражение type.wrap().erase() возвращает то же значение, что и type.generic().
Возвращает:
версию исходного типа, в которой заменены все примитивные типы

unwrap

public MethodType unwrap()
Преобразует все типы-оболочки в соответствующие примитивные типы. Вспомогательный метод для methodType. Все примитивные типы (включая void) останутся без изменений. Тип возвращаемого значения java.lang.Void изменяется на void.
Возвращает:
версию исходного типа, в которой заменены все типы-оболочки

parameterType

public Class<?> parameterType(int num)
Возвращает тип параметра с указанным индексом в данном типе метода.
Указано в:
parameterType в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Параметры:
num — индекс (начиная с нуля) требуемого типа параметра
Возвращает:
выбранный тип параметра
Исключения:
IndexOutOfBoundsException — если num не является допустимым индексом в parameterArray()

parameterCount

public int parameterCount()
Возвращает количество типов параметров в данном типе метода.
Указано в:
parameterCount в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Возвращает:
количество типов параметров

returnType

public Class<?> returnType()
Возвращает тип возвращаемого значения данного типа метода.
Указано в:
returnType в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Возвращает:
тип возвращаемого значения

parameterList

public List<Class<?>> parameterList()
Представляет типы параметров в виде списка (вспомогательный метод). Список будет неизменяемым.
Указано в:
parameterList в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Возвращает:
типы параметров (в виде неизменяемого списка)

lastParameterType

public Class<?> lastParameterType()
Возвращает тип последнего параметра данного типа метода. Если у этого типа нет параметров, вместо него возвращается значение-заполнитель void.class.
Примечание API:

Значение-заполнитель выбрано таким образом, чтобы запросы через reflection можно было выполнять непосредственно для возвращенного значения. Его невозможно спутать с реальным параметром, поскольку void никогда не может быть допустимым типом параметра. Для режимов вызова с переменным количеством аргументов полезно использовать выражение lastParameterType().getComponentType(), чтобы запросить тип параметра «varargs».

Возвращает:
тип последнего параметра, если он есть, иначе void.class
С версии:
10

parameterArray

public Class<?>[] parameterArray()
Представляет типы параметров в виде массива (вспомогательный метод). Изменение массива не приводит к изменению типа.
Указано в:
parameterArray в интерфейсе TypeDescriptor.OfMethod<Class<?>, MethodType>
Возвращает:
типы параметров (при необходимости — в виде новой копии)

equals

public boolean equals(Object x)
Сравнивает указанный объект с этим типом на равенство. Иными словами, возвращает true тогда и только тогда, когда указанный объект также является типом метода с точно такими же параметрами и типом возвращаемого значения.
Переопределяет:
equals в классе Object
Параметры:
x — объект для сравнения
Возвращает:
true, если этот объект совпадает с аргументом obj; в противном случае — false.
См. также:
  • Object.equals(Object)

hashCode

public int hashCode()
Возвращает хеш-код этого типа метода. Он определяется как хеш-код списка List, элементы которого — тип возвращаемого значения, за которым следуют типы параметров.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хеш-кода этого типа метода
См. также:
  • Object.hashCode()
  • equals(Object)
  • List.hashCode()

toString

public String toString()
Возвращает строковое представление типа метода в форме "(PT0,PT1...)RT". Строковое представление типа метода — это заключенный в круглые скобки список имен типов, разделенных запятыми, за которым сразу следует тип возвращаемого значения.

Каждый тип представлен своим simple name.

Переопределяет:
toString в классе Object
Возвращает:
строковое представление объекта

fromMethodDescriptorString

public static MethodType fromMethodDescriptorString(String descriptor, ClassLoader loader) throws IllegalArgumentException, TypeNotPresentException
Находит или создает экземпляр типа метода по заданному дескриптору метода (JVMS §4.3.3). Этот метод является вспомогательным методом для methodType. Имена классов или интерфейсов, содержащиеся в строке дескриптора, будут разрешены указанным загрузчиком (или, если он равен null, системным загрузчиком классов).
Примечание API:
Можно встретить типы методов с допустимыми дескрипторами, которые невозможно создать этим методом, поскольку их типы компонентов не видны из общего загрузчика классов.

Этот метод предназначен для приложений, которым необходимо генерировать байт-код для обработки дескрипторов методов и invokedynamic.

Параметры:
descriptor — строка дескриптора метода
loader — загрузчик классов, используемый для поиска типов
Возвращает:
тип метода, заданный дескриптором
Исключения:
NullPointerException — если строка равна null
IllegalArgumentException — если строка не является дескриптором метода
TypeNotPresentException — если именованный тип не найден
См. Спецификацию виртуальной машины Java:
4.3.3 Дескрипторы методов

toMethodDescriptorString

public String toMethodDescriptorString()
Возвращает строку дескриптора для этого типа метода. Этот метод эквивалентен вызову MethodType::descriptorString.
Примечание API:
Это не является строгой обратной операцией для fromMethodDescriptorString, которому требуются дескриптор типа метода (JVMS §4.3.3) и подходящий аргумент-загрузчик классов. Два разных объекта MethodType могут иметь одинаковые строки дескрипторов, поскольку разные классы могут иметь одинаковые имена, но разные загрузчики классов.

Этот метод предназначен для приложений, которым необходимо генерировать байт-код для обработки дескрипторов методов и invokedynamic.

Возвращает:
строку дескриптора для этого типа метода
См. Спецификацию виртуальной машины Java:
4.3.3 Дескрипторы методов
См. также:
  • Номинальный дескриптор для MethodType

descriptorString

public String descriptorString()
Возвращает строку дескриптора для этого типа метода.

Если этот тип метода можно описать номинально, результатом будет дескриптор типа метода (JVMS §4.3.3). MethodTypeDesc для этого типа метода можно получить, вызвав MethodTypeDesc::ofDescriptor с полученной строкой дескриптора.

Если этот тип метода нельзя описать номинально, результатом будет строка следующей формы:

"(<parameter-descriptors>)<return-descriptor>"
где <parameter-descriptors> — это объединение строки дескриптора каждого типа параметра и строки дескриптора типа возвращаемого значения. Из результирующей строки нельзя получить MethodTypeDesc.
Указано в:
descriptorString в интерфейсе TypeDescriptor
Возвращает:
строку дескриптора для этого типа метода
См. Спецификацию виртуальной машины Java:
4.3.3 Дескрипторы методов
С версии:
12
См. также:
  • Номинальный дескриптор для MethodType

describeConstable

public Optional<MethodTypeDesc> describeConstable()
Возвращает номинальный дескриптор для этого экземпляра, если его можно создать, или пустой объект Optional, если создать его невозможно.
Указано в:
describeConstable в интерфейсе Constable
Возвращает:
объект Optional, содержащий полученный номинальный дескриптор, или пустой объект Optional, если создать дескриптор невозможно.
С версии:
12
См. также:
  • Номинальный дескриптор для MethodType

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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