Интерфейс 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
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в интерфейсе 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 |
targetLayout() |
Возвращает целевой макет, связанный с этим адресным макетом (если он есть). |
AddressLayout |
withByteAlignment |
Возвращает макет памяти с теми же характеристиками, что и у этого макета, но с заданным ограничением выравнивания (в байтах). |
AddressLayout |
withName |
Возвращает макет памяти с теми же характеристиками, что и у этого макета, но с заданным именем. |
AddressLayout |
withOrder |
Возвращает макет значения с теми же характеристиками, что и у этого макета, но с заданным порядком байтов. |
AddressLayout |
withoutName() |
Возвращает макет памяти с теми же характеристиками, что и у этого макета, но без имени. |
AddressLayout |
withoutTargetLayout() |
Возвращает адресный макет с теми же типом-носителем, ограничением выравнивания, именем и порядком, что и у этого адресного макета, но без целевого макета. |
AddressLayout |
withTargetLayout |
Ограниченный. Возвращает адресный макет с теми же типом-носителем, ограничением выравнивания, именем и порядком, что и у этого адресного макета, но связанный с указанным целевым макетом. |
Методы, объявленные в интерфейсе 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— имя макета - Возвращает:
- макет памяти с теми же характеристиками, что и у этого макета, но с заданным именем
- См. также:
withoutName
AddressLayout withoutName()
- Определено в:
-
withoutNameв интерфейсеMemoryLayout - Определено в:
-
withoutNameв интерфейсеValueLayout - Возвращает:
- макет памяти с теми же характеристиками, что и у этого макета, но без имени
- См. также:
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. - Примечание к API:
- Этот метод также можно использовать для создания адресного макета, который при использовании создает сегменты нативной памяти максимально возможного размера (например, Long.MAX_VALUE). Для этого можно использовать целевой макет последовательности с неопределенным размером, как показано ниже:
AddressLayout addressLayout = ... AddressLayout unboundedLayout = addressLayout.withTargetLayout( MemoryLayout.sequenceLayout(Long.MAX_VALUE, ValueLayout.JAVA_BYTE)); - Параметры:
-
layout— целевой макет - Возвращает:
- адресный макет с теми же характеристиками, что и у этого макета, но с указанным целевым макетом
- Выбрасывает:
-
IllegalCallerException— если вызывающий код находится в модуле, для которого не разрешен доступ к нативному коду - См. также:
withoutTargetLayout
AddressLayout withoutTargetLayout()
- Примечание к API:
- Это может быть полезно для сравнения двух адресных макетов с разными целевыми макетами, но в остальном равных.
- Возвращает:
- адресный макет с теми же характеристиками, что и у этого макета, но без целевого макета
- См. также:
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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/foreign/AddressLayout.html
withTargetLayout, только если разрешен доступ к ограниченным методам.