Spec-Zone.ru › OpenJDK 27

Интерфейс AddressLayout

Все суперинтерфейсы:
MemoryLayout, ValueLayout
public sealed interface AddressLayout extends ValueLayout
Макет значения, используемый для моделирования адреса некоторой области памяти. Тип-носитель, связанный с макетом адреса, — MemorySegment.class. Размер и выравнивание макета адреса зависят от платформы (например, на 64-разрядной платформе размер и выравнивание макета адреса равны 8 байтам).

Макет адреса может дополнительно включать целевой макет. Макет адреса с целевым макетом T можно использовать для моделирования адреса области памяти, макет которой — T. Например, макет адреса с целевым макетом ValueLayout.JAVA_INT можно использовать для моделирования адреса области памяти длиной 4 байта. Указание целевого макета может быть полезно в следующих ситуациях:

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

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

Вложенные классы и интерфейсы, объявленные в интерфейсе MemoryLayout

MemoryLayout.PathElement
Модификатор и тип Интерфейс Описание
static interface  MemoryLayout.PathElement
Элемент в пути макета.

Вложенные классы и интерфейсы, объявленные в интерфейсе ValueLayout

ValueLayout.OfBoolean, ValueLayout.OfByte, ValueLayout.OfChar, ValueLayout.OfDouble, ValueLayout.OfFloat, ValueLayout.OfInt, ValueLayout.OfLong, ValueLayout.OfShort
Модификатор и тип Интерфейс Описание
static interface  ValueLayout.OfBoolean
Макет значения, типом-носителем которого является boolean.class.
static interface  ValueLayout.OfByte
Макет значения, типом-носителем которого является byte.class.
static interface  ValueLayout.OfChar
Макет значения, типом-носителем которого является char.class.
static interface  ValueLayout.OfDouble
Макет значения, типом-носителем которого является double.class.
static interface  ValueLayout.OfFloat
Макет значения, типом-носителем которого является float.class.
static interface  ValueLayout.OfInt
Макет значения, типом-носителем которого является int.class.
static interface  ValueLayout.OfLong
Макет значения, типом-носителем которого является long.class.
static interface  ValueLayout.OfShort
Макет значения, типом-носителем которого является short.class.

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

Поля, объявленные в интерфейсе 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
Модификатор и тип Поле Описание
static final AddressLayout ADDRESS
Константа макета адреса, размер которой совпадает с размером машинного адреса (size_t), выравнивание в байтах равно sizeof(size_t), порядок байтов — ByteOrder.nativeOrder().
static final AddressLayout ADDRESS_UNALIGNED
Константа невыровненного макета адреса, размер которой совпадает с размером машинного адреса (size_t), а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfBoolean JAVA_BOOLEAN
Константа макета значения, размер которой совпадает с размером значения Java типа boolean, выравнивание в байтах равно 1, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfByte JAVA_BYTE
Константа макета значения, размер которой совпадает с размером значения Java типа byte, выравнивание в байтах равно 1, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfChar JAVA_CHAR
Константа макета значения, размер которой совпадает с размером значения Java типа char, выравнивание в байтах равно 2, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfChar JAVA_CHAR_UNALIGNED
Константа невыровненного макета значения, размер которой совпадает с размером значения Java типа char, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfDouble JAVA_DOUBLE
Константа макета значения, размер которой совпадает с размером значения Java типа double, выравнивание в байтах равно 8, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfDouble JAVA_DOUBLE_UNALIGNED
Константа невыровненного макета значения, размер которой совпадает с размером значения Java типа double, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfFloat JAVA_FLOAT
Константа макета значения, размер которой совпадает с размером значения Java типа float, выравнивание в байтах равно 4, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfFloat JAVA_FLOAT_UNALIGNED
Константа невыровненного макета значения, размер которой совпадает с размером значения Java типа float, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfInt JAVA_INT
Константа макета значения, размер которой совпадает с размером значения Java типа int, выравнивание в байтах равно 4, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfInt JAVA_INT_UNALIGNED
Константа невыровненного макета значения, размер которой совпадает с размером значения Java типа int, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfLong JAVA_LONG
Константа макета значения, размер которой совпадает с размером значения Java типа long, выравнивание в байтах равно 8, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfLong JAVA_LONG_UNALIGNED
Константа невыровненного макета значения, размер которой совпадает с размером значения Java типа long, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfShort JAVA_SHORT
Константа макета значения, размер которой совпадает с размером значения Java типа short, выравнивание в байтах равно 2, а порядок байтов — ByteOrder.nativeOrder().
static final ValueLayout.OfShort JAVA_SHORT_UNALIGNED
Константа невыровненного макета значения, размер которой совпадает с размером значения Java типа short, а порядок байтов — ByteOrder.nativeOrder().

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

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

Методы, объявленные в интерфейсе MemoryLayout

arrayElementVarHandle, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, scale, scaleHandle, select, sliceHandle, toString, varHandle
Модификатор и тип Метод Описание
VarHandle arrayElementVarHandle(MemoryLayout.PathElement... elements)
Создает дескриптор переменной, который обращается к соседним элементам в сегменте памяти по смещениям, выбранным заданным путем макета; доступ к элементам осуществляется с использованием этого макета, а начальный макет в пути — это данный макет.
long byteAlignment()
Возвращает ограничение на выравнивание, связанное с этим макетом, в байтах.
long byteOffset(MemoryLayout.PathElement... elements)
Вычисляет смещение в байтах макета, выбранного заданным путем макета, где начальный макет в пути — это данный макет.
MethodHandle byteOffsetHandle(MemoryLayout.PathElement... elements)
Создает дескриптор метода, вычисляющий смещение в байтах макета, выбранного заданным путем макета, где начальный макет в пути — это данный макет.
long byteSize()
Возвращает размер макета в байтах.
boolean equals(Object other)
Сравнивает указанный объект с этим макетом на равенство.
int hashCode()
Возвращает хеш-код этого макета.
Optional<String> name()
Возвращает имя (если оно есть), связанное с этим макетом.
long scale(long offset, long index)
Возвращает offset + (byteSize() * index).
MethodHandle scaleHandle()
Возвращает дескриптор метода, который можно использовать для вызова MemoryLayout.scale(long, long) для этого макета.
MemoryLayout select(MemoryLayout.PathElement... elements)
Возвращает макет, выбранный по указанному пути, где начальный макет в пути — это данный макет.
MethodHandle sliceHandle(MemoryLayout.PathElement... elements)
Создает дескриптор метода, который принимает сегмент памяти и возвращает срез, соответствующий макету, выбранному заданным путем макета, где начальный макет в пути — это данный макет.
String toString()
Возвращает строковое представление этого макета.
VarHandle varHandle(MemoryLayout.PathElement... elements)
Создает дескриптор переменной, который обращается к сегменту памяти по смещению, выбранному заданным путем макета, где начальный макет в пути — это данный макет.

Методы, объявленные в интерфейсе ValueLayout

carrier, order, varHandle
Модификатор и тип Метод Описание
Class<?> carrier()
Возвращает тип-носитель, связанный с этим макетом значения.
ByteOrder order()
Возвращает порядок байтов значения.
VarHandle varHandle()
Возвращает дескриптор переменной, с помощью которого можно получить доступ к значениям, описанным этим макетом значения, в заданном сегменте памяти.

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

withName

AddressLayout withName(String name)
Возвращает макет памяти с теми же характеристиками, что и у этого макета, но с заданным именем.
Переопределяет:
withName в интерфейсе MemoryLayout
Переопределяет:
withName в интерфейсе ValueLayout
Параметры:
name — имя макета
Возвращает:
макет памяти с теми же характеристиками, что и у этого макета, но с заданным именем
См. также:
  • MemoryLayout.name()

withoutName

AddressLayout withoutName()
Возвращает макет памяти с теми же характеристиками, что и у этого макета, но без имени.
Переопределяет:
withoutName в интерфейсе MemoryLayout
Переопределяет:
withoutName в интерфейсе ValueLayout
Возвращает:
макет памяти с теми же характеристиками, что и у этого макета, но без имени
См. также:
  • MemoryLayout.name()

withByteAlignment

AddressLayout withByteAlignment(long byteAlignment)
Возвращает макет памяти с теми же характеристиками, что и у этого макета, но с заданным ограничением на выравнивание (в байтах).
Переопределяет:
withByteAlignment в интерфейсе MemoryLayout
Переопределяет:
withByteAlignment в интерфейсе ValueLayout
Параметры:
byteAlignment — ограничение на выравнивание макета, выраженное в байтах
Возвращает:
макет памяти с теми же характеристиками, что и у этого макета, но с заданным ограничением на выравнивание (в байтах)

withOrder

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

withTargetLayout

AddressLayout withTargetLayout(MemoryLayout layout)
withTargetLayout — это ограниченный метод платформы Java.
Программы могут использовать withTargetLayout только при включенном доступе к ограниченным методам.
Ограниченные методы небезопасны: при неправильном использовании они могут привести к аварийному завершению JVM или повреждению памяти.
Возвращает макет адреса с теми же типом-носителем, ограничением на выравнивание, именем и порядком байтов, что и у этого макета адреса, но связанный с указанным целевым макетом. Возвращаемый макет адреса позволяет обращаться к необработанным адресам как к сегментам памяти, размер которых равен размеру указанного макета. Кроме того, если доступный необработанный адрес не соответствует ограничению на выравнивание заданного макета, будет выброшено исключение IllegalArgumentException.
Примечание API:
Этот метод также можно использовать для создания макета адреса, который при использовании создает сегменты нативной памяти максимального размера (например, Long.MAX_VALUE). Для этого используется макет целевой последовательности с неуказанным размером, как показано ниже:
 AddressLayout addressLayout   = ...
 AddressLayout unboundedLayout = addressLayout.withTargetLayout(
         MemoryLayout.sequenceLayout(Long.MAX_VALUE, ValueLayout.JAVA_BYTE));
Параметры:
layout — целевой макет
Возвращает:
макет адреса с теми же характеристиками, что и у этого макета, но с указанным целевым макетом
Выбрасывает:
IllegalCallerException — если вызывающий код находится в модуле, для которого не включен доступ к нативному коду
См. также:
  • targetLayout()

withoutTargetLayout

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

targetLayout

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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