Интерфейс 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
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в интерфейсе 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 |
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 | Модификатор и тип | Метод | Описание |
|---|---|---|
VarHandle |
arrayElementVarHandle |
Создает дескриптор переменной, который обращается к соседним элементам в сегменте памяти по смещениям, выбранным заданным путем макета; доступ к элементам осуществляется с использованием этого макета, а начальный макет в пути — это данный макет. |
long |
byteAlignment() |
Возвращает ограничение на выравнивание, связанное с этим макетом, в байтах. |
long |
byteOffset |
Вычисляет смещение в байтах макета, выбранного заданным путем макета, где начальный макет в пути — это данный макет. |
MethodHandle |
byteOffsetHandle |
Создает дескриптор метода, вычисляющий смещение в байтах макета, выбранного заданным путем макета, где начальный макет в пути — это данный макет. |
long |
byteSize() |
Возвращает размер макета в байтах. |
boolean |
equals |
Сравнивает указанный объект с этим макетом на равенство. |
int |
hashCode() |
Возвращает хеш-код этого макета. |
Optional |
name() |
Возвращает имя (если оно есть), связанное с этим макетом. |
long |
scale |
Возвращает offset + (byteSize() * index). |
MethodHandle |
scaleHandle() |
Возвращает дескриптор метода, который можно использовать для вызова MemoryLayout.scale(long, long) для этого макета. |
MemoryLayout |
select |
Возвращает макет, выбранный по указанному пути, где начальный макет в пути — это данный макет. |
MethodHandle |
sliceHandle |
Создает дескриптор метода, который принимает сегмент памяти и возвращает срез, соответствующий макету, выбранному заданным путем макета, где начальный макет в пути — это данный макет. |
String |
toString() |
Возвращает строковое представление этого макета. |
VarHandle |
varHandle |
Создает дескриптор переменной, который обращается к сегменту памяти по смещению, выбранному заданным путем макета, где начальный макет в пути — это данный макет. |
Методы, объявленные в интерфейсе ValueLayout
carrier, order, varHandle | Модификатор и тип | Метод | Описание |
|---|---|---|
Class |
carrier() |
Возвращает тип-носитель, связанный с этим макетом значения. |
ByteOrder |
order() |
Возвращает порядок байтов значения. |
VarHandle |
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.
withTargetLayoutтолько при включенном доступе к ограниченным методам.