Интерфейс FunctionDescriptor
public sealed interface FunctionDescriptor
Дескриптор функции моделирует сигнатуру внешней функции. Дескриптор функции состоит из нуля или более компоновок аргументов и нуля или одной компоновки возвращаемого значения. Дескриптор функции используется для создания дескрипторов методов для вызова внешних функцийОГРАНИЧЕНО и заглушек обратного вызоваОГРАНИЧЕНО.
- Требования к реализации:
- Реализующие классы являются неизменяемыми, потокобезопасными и основанными на значениях.
- С версии:
- 22
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
FunctionDescriptor |
appendArgumentLayouts |
Возвращает дескриптор функции с указанными компоновками аргументов, добавленными к компоновкам аргументов этого дескриптора функции. |
List |
argumentLayouts() |
Возвращает компоновки аргументов этого дескриптора функции (в виде неизменяемого списка). |
FunctionDescriptor |
changeReturnLayout |
Возвращает дескриптор функции с указанной компоновкой возвращаемого значения. |
FunctionDescriptor |
dropReturnLayout() |
Возвращает новый дескриптор функции без компоновки возвращаемого значения. |
FunctionDescriptor |
insertArgumentLayouts |
Возвращает дескриптор функции с указанными компоновками аргументов, вставленными по заданному индексу в массив компоновок аргументов этого дескриптора функции. |
static FunctionDescriptor |
of |
Создает дескриптор функции с указанными компоновками возвращаемого значения и аргументов. |
static FunctionDescriptor |
ofVoid |
Создает дескриптор функции с указанными компоновками аргументов и без компоновки возвращаемого значения. |
Optional |
returnLayout() |
Возвращает компоновку возвращаемого значения этого дескриптора функции, если она имеется. |
MethodType |
toMethodType() |
Возвращает тип метода, состоящий из типов-носителей компоновок этого дескриптора функции. |
Подробное описание методов
returnLayout
Optional<MemoryLayout> returnLayout()
Возвращает компоновку возвращаемого значения этого дескриптора функции, если она имеется.
- Возвращает:
- компоновку возвращаемого значения этого дескриптора функции, если она имеется
argumentLayouts
List<MemoryLayout> argumentLayouts()
Возвращает компоновки аргументов этого дескриптора функции (в виде неизменяемого списка).
- Возвращает:
- компоновки аргументов этого дескриптора функции (в виде неизменяемого списка)
appendArgumentLayouts
FunctionDescriptor appendArgumentLayouts(MemoryLayout... addedLayouts)
Возвращает дескриптор функции с указанными компоновками аргументов, добавленными к компоновкам аргументов этого дескриптора функции.
- Параметры:
-
addedLayouts— компоновки аргументов, которые нужно добавить - Возвращает:
- новый дескриптор функции с указанными дополнительными компоновками аргументов
- Вызывает исключение:
-
IllegalArgumentException— если одна из компоновок вaddedLayoutsявляется компоновкой заполнения
insertArgumentLayouts
FunctionDescriptor insertArgumentLayouts(int index, MemoryLayout... addedLayouts)
Возвращает дескриптор функции с указанными компоновками аргументов, вставленными по заданному индексу в массив компоновок аргументов этого дескриптора функции.
- Параметры:
-
index— индекс, по которому нужно вставить аргументы -
addedLayouts— компоновки аргументов, которые нужно вставить по указанному индексу - Возвращает:
- новый дескриптор функции с указанными дополнительными компоновками аргументов
- Вызывает исключение:
-
IllegalArgumentException— если одна из компоновок вaddedLayoutsявляется компоновкой заполнения -
IllegalArgumentException— еслиindex < 0 || index > argumentLayouts().size()
changeReturnLayout
FunctionDescriptor changeReturnLayout(MemoryLayout newReturn)
Возвращает дескриптор функции с указанной компоновкой возвращаемого значения.
- Параметры:
-
newReturn— новая компоновка возвращаемого значения - Возвращает:
- новый дескриптор функции с указанной компоновкой возвращаемого значения
- Вызывает исключение:
-
IllegalArgumentException— еслиnewReturnявляется компоновкой заполнения
dropReturnLayout
FunctionDescriptor dropReturnLayout()
Возвращает новый дескриптор функции без компоновки возвращаемого значения.
- Возвращает:
- новый дескриптор функции без компоновки возвращаемого значения
toMethodType
MethodType toMethodType()
Возвращает тип метода, состоящий из типов-носителей компоновок этого дескриптора функции.
Тип-носитель компоновки L определяется следующим образом:
- Если
LявляетсяValueLayout, тип-носитель определяется с помощьюValueLayout.carrier(). - Если
LявляетсяGroupLayoutилиSequenceLayout, типом-носителем являетсяMemorySegment.
- Примечание к API:
- Дескриптор функции по своей конструкции не может содержать компоновки заполнения. Поэтому не требуется указывать, как компоновка заполнения должна сопоставляться с типами-носителями.
- Возвращает:
- тип метода, состоящий из типов-носителей компоновок этого дескриптора функции
of
static FunctionDescriptor of(MemoryLayout resLayout, MemoryLayout... argLayouts)
Создает дескриптор функции с указанными компоновками возвращаемого значения и аргументов.
- Параметры:
-
resLayout— компоновка возвращаемого значения -
argLayouts— компоновки аргументов - Возвращает:
- новый дескриптор функции с указанными компоновками возвращаемого значения и аргументов
- Вызывает исключение:
-
IllegalArgumentException— еслиresLayoutявляется компоновкой заполнения -
IllegalArgumentException— если одна из компоновок вargLayoutsявляется компоновкой заполнения
ofVoid
static FunctionDescriptor ofVoid(MemoryLayout... argLayouts)
Создает дескриптор функции с указанными компоновками аргументов и без компоновки возвращаемого значения. Это полезно для моделирования функций, которые не возвращают значения.
- Параметры:
-
argLayouts— компоновки аргументов - Возвращает:
- новый дескриптор функции с указанными компоновками аргументов
- Вызывает исключение:
-
IllegalArgumentException— если одна из компоновок вargLayoutsявляется компоновкой заполнения
© 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/foreign/FunctionDescriptor.html