Spec-Zone.ru › OpenJDK 25

Интерфейс 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...)ОГРАНИЧЕНО.
Требования к реализации:
Реализации этого интерфейса неизменяемы, потокобезопасны и основаны на значениях (value-based).
Начиная с версии:
22
См. также:
  • ValueLayout.ADDRESS
  • ValueLayout.ADDRESS_UNALIGNED

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

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

MemoryLayout.PathElement

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

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

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

Поля, объявленные в интерфейсе 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)
Ограниченный.
Возвращает адресный макет с теми же типом-носителем, ограничением выравнивания, именем и порядком, что и у этого адресного макета, но связанный с указанным целевым макетом.

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, где содержатся более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/foreign/AddressLayout.html

Spec-Zone.ru

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