Spec-Zone.ru › OpenJDK 17

Класс 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 Virtual Machine.)

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

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

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

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

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

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

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

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

TypeDescriptor.OfField<F extends TypeDescriptor.OfField<F>>, TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>,M extends TypeDescriptor.OfMethod<F,M>>

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

Модификатор и тип Метод Описание
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)
Находит или создаёт экземпляр типа метода, исходя из записи его байткодового дескриптора.
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()
Преобразует все примитивные типы в соответствующие типы обертки.

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

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

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 истинно)
См. также:
  • 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.
Specified by:
dropParameterTypes в интерфейсе TypeDescriptor.OfMethod<Class<?>,MethodType>
Parameters:
start — индекс (нумерация с нуля) первого типа параметра для удаления
end — индекс (больше чем start) первого типа параметра после которого не удалять
Returns:
тот же тип, за исключением удалённых параметров
Throws:
IndexOutOfBoundsException — если start отрицательное или больше чем parameterCount(), или если end отрицательное или больше чем parameterCount(), или если start больше чем end

changeReturnType

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

hasPrimitives

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

hasWrappers

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

erase

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

generic

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

wrap

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

unwrap

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

parameterType

public Class<?> parameterType(int num)
Возвращает тип параметра по указанному индексу в этом типе метода.
Specified by:
parameterType в интерфейсе TypeDescriptor.OfMethod<Class<?>,MethodType>
Parameters:
num — индекс (нумерация с нуля) нужного типа параметра
Returns:
выбранный тип параметра
Throws:
IndexOutOfBoundsException — если num не является допустимым индексом в parameterArray()

parameterCount

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

returnType

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

parameterList

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

lastParameterType

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

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

Returns:
последний тип параметра, если он есть, иначе void.class
Since:
10

parameterArray

public Class<?>[] parameterArray()
Представляет типы параметров в виде массива (удобный метод). Изменения в массиве не приведут к изменениям в типе.
Specified by:
parameterArray в интерфейсе TypeDescriptor.OfMethod<Class<?>,MethodType>
Returns:
типы параметров (как новая копия, если необходимо)

equals

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

hashCode

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

toString

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

Каждое имя типа представляется его simple name.

Overrides:
toString в классе Object
Returns:
строковое представление объекта.

fromMethodDescriptorString

public static MethodType fromMethodDescriptorString(String descriptor, ClassLoader loader) throws IllegalArgumentException, TypeNotPresentException
Находит или создаёт экземпляр типа метода, заданного написанием его байткода. Удобный метод для methodType. Любое имя класса или интерфейса, встроенное в строку дескриптора, будет разрешено заданным загрузчиком (или, если он равен null, системным загрузчиком).

Обратите внимание, что могут встречаться типы методов, которые нельзя создать этим методом, потому что все их составные типы недоступны из одного загрузчика классов.

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

Parameters:
descriptor — строка дескриптора байткода "(T...)T"
loader — загрузчик классов для поиска типов
Returns:
тип метода, соответствующий строке дескриптора байткода
Throws:
NullPointerException — если строка равна null
IllegalArgumentException — если строка имеет неправильный формат
TypeNotPresentException — если тип с заданным именем не найден
SecurityException — если менеджер безопасности присутствует и loader является null и у вызывающего нет разрешения RuntimePermission("getClassLoader")

toMethodDescriptorString

public String toMethodDescriptorString()
Возвращает строку-описатель для типа метода. Этот метод эквивалентен вызову MethodType::descriptorString.

Обратите внимание, что это не строго обратное преобразование к fromMethodDescriptorString. Два разных класса с общим именем, но с различными загрузчиками классов, будут выглядеть идентично в строках описателей.

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

Returns:
строку-описатель для данного типа метода
См. Спецификацию виртуальной машины 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
Returns:
строку-описатель для этого типа метода
См. Спецификацию виртуальной машины Java:
4.3.3 Описатели методов
С:
12
См. также:
  • Номинальный описатель для MethodType

describeConstable

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

© 1993, 2021, 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/17/docs/api/java.base/java/lang/invoke/MethodType.html

Spec-Zone.ru

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