Spec-Zone.ru › OpenJDK 24

Интерфейс 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

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

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

MemoryLayout.PathElement

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

ValueLayout.OfBoolean, ValueLayout.OfByte, ValueLayout.OfChar, ValueLayout.OfDouble, ValueLayout.OfFloat, ValueLayout.OfInt, ValueLayout.OfLong, ValueLayout.OfShort

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

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

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

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

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

carrier, order, 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()
Возвращает целевой макет, связанный с этим макетом адреса (если таковой имеется).
Возвращает:
целевой макет, связанный с этим макетом адреса (если таковой имеется)

© 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/AddressLayout.html

Spec-Zone.ru

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