Spec-Zone.ru › OpenJDK 21

Интерфейс AddressLayout

Все суперинтерфейсы:
MemoryLayoutPREVIEW, ValueLayoutPREVIEW
public sealed interface AddressLayout extends ValueLayoutPREVIEW
AddressLayout — это предварительный API платформы Java.
Программы могут использовать AddressLayout только при включенных предварительных функциях.
Функции предварительного просмотра могут быть удалены в будущих версиях или обновлены до постоянных функций платформы Java.
Макет значения, используемый для моделирования адреса некоторой области памяти. Переносчик, связанный с макетом адреса, — MemorySegment.class. Размер и выравнивание макета адреса зависят от платформы (например, на 64-битной платформе размер и выравнивание макета адреса составляют 8 байт).

Макет адреса может необязательно иметь макет целевого значения (целевой макет). Макет адреса с целевым макетом T может использоваться для моделирования адреса области памяти, макет которой T. Например, макет адреса с целевым макетом ValueLayout.JAVA_INTПРЕДПРОСМОТР может использоваться для моделирования адреса области памяти длиной 4 байта. Указание целевого макета может быть полезно в следующих ситуациях:

  • При доступе к сегменту памяти, который был получен путем чтения адреса из другого сегмента памяти, например, с помощью MemorySegment.getAtIndex(AddressLayout, long)ПРЕДПРОСМОТР;
  • При создании обработчика вызова вниз по методу, используя Linker.downcallHandle(FunctionDescriptor, Option...)ПРЕДПРОСМОТР;
  • При создании заглушки вызова вверх, используя Linker.upcallStub(MethodHandle, FunctionDescriptor, Arena, Option...)ПРЕДПРОСМОТР.
С:
19
См. также:
  • ValueLayout.ADDRESSПРЕДПРОСМОТР
  • ValueLayout.ADDRESS_UNALIGNEDПРЕДПРОСМОТР

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

Вложенные классы/интерфейсы, объявленные в интерфейсе java.lang.foreign.MemoryLayoutПРЕДПРОСМОТР

MemoryLayout.PathElementPREVIEW

Вложенные классы/интерфейсы, объявленные в интерфейсе java.lang.foreign.ValueLayoutПРЕДПРОСМОТР

ValueLayout.OfBooleanPREVIEW, ValueLayout.OfBytePREVIEW, ValueLayout.OfCharPREVIEW, ValueLayout.OfDoublePREVIEW, ValueLayout.OfFloatPREVIEW, ValueLayout.OfIntPREVIEW, ValueLayout.OfLongPREVIEW, ValueLayout.OfShortPREVIEW

Краткое описание полей

Поля, объявленные в интерфейсе java.lang.foreign.ValueLayoutПРЕДПРОСМОТР

ADDRESS, ADDRESS_UNALIGNED, JAVA_BOOLEAN, JAVA_BYTE, JAVA_CHAR, JAVA_CHAR_UNALIGNED, JAVA_DOUBLE, JAVA_DOUBLE_UNALIGNED, JAVA_FLOAT, JAVA_FLOAT_UNALIGNED, JAVA_INT, JAVA_INT_UNALIGNED, JAVA_LONG, JAVA_LONG_UNALIGNED, JAVA_SHORT, JAVA_SHORT_UNALIGNED

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

Модификатор и тип Метод Описание
Optional<MemoryLayoutPREVIEW> targetLayout()
Возвращает целевой макет, связанный с этим макетом адреса (если таковой имеется).
AddressLayoutPREVIEW withByteAlignment(long byteAlignment)
Возвращает макет памяти с такими же характеристиками, что и у этого макета, но с заданным ограничением выравнивания (в байтах).
AddressLayoutPREVIEW withName(String name)
Возвращает макет памяти с такими же характеристиками, что и у этого макета, но с указанным именем.
AddressLayoutPREVIEW withOrder(ByteOrder order)
Возвращает макет значения с такими же характеристиками, что и у этого макета, но с указанным порядком байтов.
AddressLayoutPREVIEW withoutName()
Возвращает макет памяти с такими же характеристиками, что и у этого макета, но без имени.
AddressLayoutPREVIEW withoutTargetLayout()
Возвращает макет адреса с тем же носителем, ограничением выравнивания, именем и порядком, что и у этого макета адреса, но без целевого макета.
AddressLayoutPREVIEW withTargetLayout(MemoryLayoutPREVIEW layout)
Возвращает макет адреса с тем же носителем, ограничением выравнивания, именем и порядком, что и у этого макета адреса, но связанный с указанным целевым макетом.

Методы, объявленные в интерфейсе java.lang.foreign.MemoryLayoutПРЕДПРОСМОТР

byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, select, sliceHandle, toString, varHandle

Методы, объявленные в интерфейсе java.lang.foreign.ValueLayoutПРЕДПРОСМОТР

arrayElementVarHandle, carrier, order

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

withName

AddressLayoutPREVIEW withName(String name)
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с указанным именем.
Указано:
withName в интерфейсе MemoryLayoutPREVIEW
Указано:
withName в интерфейсе ValueLayoutPREVIEW
Параметры:
name - имя макета.
Возвращает:
макет памяти с теми же характеристиками, что и этот макет, но с указанным именем
См. также:
  • MemoryLayout.name()ПРЕВЬЮ

withoutName

AddressLayoutPREVIEW withoutName()
Возвращает макет памяти с теми же характеристиками, что и этот макет, но без имени.
Указано:
withoutName в интерфейсе MemoryLayoutPREVIEW
Указано:
withoutName в интерфейсе ValueLayoutPREVIEW
Возвращает:
макет памяти с теми же характеристиками, что и этот макет, но без имени
См. также:
  • MemoryLayout.name()ПРЕВЬЮ

withByteAlignment

AddressLayoutPREVIEW withByteAlignment(long byteAlignment)
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с указанным ограничением выравнивания (в байтах).
Указано:
withByteAlignment в интерфейсе MemoryLayoutPREVIEW
Указано:
withByteAlignment в интерфейсе ValueLayoutPREVIEW
Параметры:
byteAlignment - ограничение выравнивания макета, выраженное в байтах.
Возвращает:
макет памяти с теми же характеристиками, что и этот макет, но с указанным ограничением выравнивания (в байтах)

withOrder

AddressLayoutPREVIEW withOrder(ByteOrder order)
Возвращает макет значения с теми же характеристиками, что и этот макет, но с указанным порядком байтов.
Указано:
withOrder в интерфейсе ValueLayoutPREVIEW
Параметры:
order - желаемый порядок байтов.
Возвращает:
макет значения с теми же характеристиками, что и этот макет, но с указанным порядком байтов

withTargetLayout

AddressLayoutPREVIEW withTargetLayout(MemoryLayoutPREVIEW layout)
Возвращает макет адреса с тем же носителем, ограничением выравнивания, именем и порядком, что и этот макет адреса, но связанный с указанным целевым макетом. Возвращаемый макет адреса позволяет получать доступ к сырым адресам как к сегментам памятиПРЕВЬЮ, размер которых устанавливается в размер указанного макета. Кроме того, если доступный сырой адрес не совместим с ограничением выравнивания в предоставленном макете, будет выброшено исключение IllegalArgumentException.
Примечание API:
Этот метод также может использоваться для создания макета адреса, который при использовании создает сегменты памяти с максимальным размером (например, Long.MAX_VALUE). Это можно сделать, используя макет последовательности целевого значения с неопределенным размером, как показано ниже:
 AddressLayout addressLayout   = ...
 AddressLayout unboundedLayout = addressLayout.withTargetLayout(
         MemoryLayout.sequenceLayout(ValueLayout.JAVA_BYTE));

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

Параметры:
layout - целевой макет.
Возвращает:
макет адреса с теми же характеристиками, что и этот макет, но с предоставленным целевым макетом.
Исключения:
IllegalCallerException - Если вызывающий находится в модуле, в котором не включен доступ к нативному коду.
См. также:
  • targetLayout()

withoutTargetLayout

AddressLayoutPREVIEW withoutTargetLayout()
Возвращает макет адреса с тем же носителем, ограничением выравнивания, именем и порядком, что и этот макет адреса, но без целевого макета.
Примечание API:
Это может быть полезно для сравнения двух макетов адресов, которые имеют разные целевые макеты, но в остальном равны.
Возвращает:
макет адреса с теми же характеристиками, что и этот макет, но без целевого макета.
См. также:
  • targetLayout()

targetLayout

Optional<MemoryLayoutPREVIEW> targetLayout()
Возвращает целевой макет, связанный с этим макетом адреса (если таковой имеется).
Возвращает:
целевой макет, связанный с этим макетом адреса (если таковой имеется)

© 1993, 2023, 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/21/docs/api/java.base/java/lang/foreign/AddressLayout.html

Spec-Zone.ru

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