Интерфейс 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/foreign/FunctionDescriptor.html