Интерфейс 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
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе 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 |
targetLayout() |
Возвращает целевой макет, связанный с этим макетом адреса (если таковой имеется). |
AddressLayout |
withByteAlignment |
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с указанным ограничением выравнивания (в байтах). |
AddressLayout |
withName |
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с заданным именем. |
AddressLayout |
withOrder |
Возвращает макет значения с теми же характеристиками, что и этот макет, но с указанным порядком байтов. |
AddressLayout |
withoutName() |
Возвращает макет памяти с теми же характеристиками, что и этот макет, но без имени. |
AddressLayout |
withoutTargetLayout() |
Возвращает макет адреса с тем же перевозчиком, ограничением выравнивания, именем и порядком, что и этот макет адреса, но без целевого макета. |
AddressLayout |
withTargetLayout |
Ограниченно. Возвращает макет адреса с тем же перевозчиком, ограничением выравнивания, именем и порядком, что и этот макет адреса, но связанный с указанным целевым макетом. |
Методы, объявленные в интерфейсе 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- имя макета - Возвращает:
- макет памяти с теми же характеристиками, что и этот макет, но с заданным именем
- См. также:
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/foreign/AddressLayout.html
withTargetLayoutтолько при включенном доступе к ограниченным методам.