Spec-Zone.ru › OpenJDK 24

Интерфейс FunctionDescriptor

public sealed interface FunctionDescriptor
Описание функции моделирует сигнатуру внешней функции. Описание функции состоит из нуля или более расположений аргументов и нуля или одного расположения возвращаемого значения. Описание функции используется для создания обработчиков вызовов извнеОГРАНИЧЕННО и заглушек вызовов внутрьОГРАНИЧЕННО.
Требования к реализации:
Реализующие классы неизменяемы, потокобезопасны и базируются на значениях.
С:
22
См. также:
  • MemoryLayout

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

Модификатор и тип Метод Описание
FunctionDescriptor appendArgumentLayouts(MemoryLayout... addedLayouts)
Возвращает описание функции с заданными расположениями аргументов, добавленными к расположениям аргументов этого описания функции.
List<MemoryLayout> argumentLayouts()
Возвращает расположения аргументов этого описания функции (как неизменяемый список).
FunctionDescriptor changeReturnLayout(MemoryLayout newReturn)
Возвращает описание функции со предоставленным расположением возвращаемого значения.
FunctionDescriptor dropReturnLayout()
Возвращает новое описание функции без расположения возвращаемого значения.
FunctionDescriptor insertArgumentLayouts(int index, MemoryLayout... addedLayouts)
Возвращает описание функции с заданными расположениями аргументов, вставленными в заданный индекс, в массив расположений аргументов этого описания функции.
static FunctionDescriptor of(MemoryLayout resLayout, MemoryLayout... argLayouts)
Создаёт описание функции с заданным расположением возвращаемого значения и расположениями аргументов.
static FunctionDescriptor ofVoid(MemoryLayout... argLayouts)
Создаёт описание функции с заданными расположениями аргументов и без расположения возвращаемого значения.
Optional<MemoryLayout> 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

Spec-Zone.ru

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