Интерфейс ValueLayout
- Все суперинтерфейсы:
MemoryLayout
- Все известные подинтерфейсы:
AddressLayout, ValueLayout.OfBoolean, ValueLayout.OfByte, ValueLayout.OfChar, ValueLayout.OfDouble, ValueLayout.OfFloat, ValueLayout.OfInt, ValueLayout.OfLong, ValueLayout.OfShort
public sealed interface ValueLayout extends MemoryLayout permits ValueLayout.OfBoolean, ValueLayout.OfByte, ValueLayout.OfChar, ValueLayout.OfShort, ValueLayout.OfInt, ValueLayout.OfFloat, ValueLayout.OfLong, ValueLayout.OfDouble, AddressLayout
Каждая компоновка значений имеет размер и выравнивание (оба параметра выражаются в байтах), порядок байтов и тип-носитель, то есть тип Java, который следует использовать при доступе к области памяти с помощью этой компоновки значений.
Этот класс определяет полезные константы компоновок значений для примитивных типов Java и адресов.
- Примечание API:
- Некоторые характеристики констант компоновок Java зависят от платформы. Например, порядок байтов этих констант задается как порядок байтов платформы, что упрощает взаимодействие с другими API, такими как массивы и
ByteBuffer. - Требования к реализации:
- реализующие классы и подклассы являются неизменяемыми, потокобезопасными и основанными на значениях.
- Граф запечатанной иерархии классов:
- Начиная с версии:
- 22
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
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. |
Вложенные классы и интерфейсы, объявленные в интерфейсе MemoryLayout
MemoryLayout.PathElement
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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(). |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Class |
carrier() |
Возвращает тип-носитель, связанный с этой компоновкой значений. |
ByteOrder |
order() |
Возвращает порядок байтов значения. |
VarHandle |
varHandle() |
Возвращает var handle, который можно использовать для доступа к значениям, описанным этой компоновкой значений, в заданном сегменте памяти. |
ValueLayout |
withByteAlignment |
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным ограничением выравнивания (в байтах). |
ValueLayout |
withName |
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным именем. |
ValueLayout |
withOrder |
Возвращает компоновку значений с теми же характеристиками, что и у этой компоновки, но с заданным порядком байтов. |
ValueLayout |
withoutName() |
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но без имени. |
Методы, объявленные в интерфейсе MemoryLayout
arrayElementVarHandle, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, scale, scaleHandle, select, sliceHandle, toString, varHandle
Подробное описание полей
ADDRESS
static final AddressLayout ADDRESS
size_t), выравнивание по байтам задано как sizeof(size_t), порядок байтов задан как ByteOrder.nativeOrder().JAVA_BYTE
static final ValueLayout.OfByte JAVA_BYTE
byte, выравнивание по байтам задано как 1, а порядок байтов задан как ByteOrder.nativeOrder().JAVA_BOOLEAN
static final ValueLayout.OfBoolean JAVA_BOOLEAN
boolean, выравнивание по байтам задано как 1, а порядок байтов задан как ByteOrder.nativeOrder().JAVA_CHAR
static final ValueLayout.OfChar JAVA_CHAR
char, выравнивание по байтам задано как 2, а порядок байтов задан как ByteOrder.nativeOrder().JAVA_SHORT
static final ValueLayout.OfShort JAVA_SHORT
short, выравнивание по байтам задано как 2, а порядок байтов задан как ByteOrder.nativeOrder().JAVA_INT
static final ValueLayout.OfInt JAVA_INT
int, выравнивание по байтам задано как 4, а порядок байтов задан как ByteOrder.nativeOrder().JAVA_LONG
static final ValueLayout.OfLong JAVA_LONG
long, выравнивание по байтам задано как 8, а порядок байтов задан как ByteOrder.nativeOrder().JAVA_FLOAT
static final ValueLayout.OfFloat JAVA_FLOAT
float, выравнивание по байтам задано как 4, а порядок байтов задан как ByteOrder.nativeOrder().JAVA_DOUBLE
static final ValueLayout.OfDouble JAVA_DOUBLE
double, выравнивание по байтам задано как 8, а порядок байтов задан как ByteOrder.nativeOrder().ADDRESS_UNALIGNED
static final AddressLayout ADDRESS_UNALIGNED
size_t), а порядок байтов задан как ByteOrder.nativeOrder(). Эквивалентна следующему коду: ADDRESS.withByteAlignment(1);
- Примечание API:
- При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут привести к проблемам с производительностью и переносимостью.
JAVA_CHAR_UNALIGNED
static final ValueLayout.OfChar JAVA_CHAR_UNALIGNED
char, а порядок байтов задан как ByteOrder.nativeOrder(). Эквивалентна следующему коду: JAVA_CHAR.withByteAlignment(1);
- Примечание API:
- При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут привести к проблемам с производительностью и переносимостью.
JAVA_SHORT_UNALIGNED
static final ValueLayout.OfShort JAVA_SHORT_UNALIGNED
short, а порядок байтов задан как ByteOrder.nativeOrder(). Эквивалентна следующему коду: JAVA_SHORT.withByteAlignment(1);
- Примечание API:
- При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут привести к проблемам с производительностью и переносимостью.
JAVA_INT_UNALIGNED
static final ValueLayout.OfInt JAVA_INT_UNALIGNED
int, а порядок байтов задан как ByteOrder.nativeOrder(). Эквивалентна следующему коду: JAVA_INT.withByteAlignment(1);
- Примечание API:
- При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут привести к проблемам с производительностью и переносимостью.
JAVA_LONG_UNALIGNED
static final ValueLayout.OfLong JAVA_LONG_UNALIGNED
long, а порядок байтов задан как ByteOrder.nativeOrder(). Эквивалентна следующему коду: JAVA_LONG.withByteAlignment(1);
- Примечание API:
- При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут привести к проблемам с производительностью и переносимостью.
JAVA_FLOAT_UNALIGNED
static final ValueLayout.OfFloat JAVA_FLOAT_UNALIGNED
float, а порядок байтов задан как ByteOrder.nativeOrder(). Эквивалентна следующему коду: JAVA_FLOAT.withByteAlignment(1);
- Примечание API:
- При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут привести к проблемам с производительностью и переносимостью.
JAVA_DOUBLE_UNALIGNED
static final ValueLayout.OfDouble JAVA_DOUBLE_UNALIGNED
double, а порядок байтов задан как ByteOrder.nativeOrder(). Эквивалентна следующему коду: JAVA_DOUBLE.withByteAlignment(1);
- Примечание API:
- При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут привести к проблемам с производительностью и переносимостью.
Подробное описание методов
order
ByteOrder order()
- Возвращает:
- порядок байтов значения
withOrder
ValueLayout withOrder(ByteOrder order)
- Параметры:
-
order— требуемый порядок байтов - Возвращает:
- компоновку значений с теми же характеристиками, что и у этой компоновки, но с заданным порядком байтов
withoutName
ValueLayout withoutName()
- Определено в:
-
withoutNameв интерфейсеMemoryLayout - Возвращает:
- компоновку памяти с теми же характеристиками, что и у этой компоновки, но без имени
- См. также:
carrier
Class<?> carrier()
- Возвращает:
- тип-носитель, связанный с этой компоновкой значений
withName
ValueLayout withName(String name)
- Определено в:
-
withNameв интерфейсеMemoryLayout - Параметры:
-
name— имя компоновки - Возвращает:
- компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным именем
- См. также:
withByteAlignment
ValueLayout withByteAlignment(long byteAlignment)
- Определено в:
-
withByteAlignmentв интерфейсеMemoryLayout - Параметры:
-
byteAlignment— ограничение выравнивания компоновки, выраженное в байтах - Возвращает:
- компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным ограничением выравнивания (в байтах)
- Вызывает исключение:
-
IllegalArgumentException— еслиbyteAlignmentне является степенью двойки
varHandle
VarHandle varHandle()
Тип var, возвращаемый var handle, — это тип var, являющийся типом-носителем этой компоновки значений, а список типов координат — (MemorySegment, long); координата сегмента памяти соответствует сегменту памяти, к которому осуществляется доступ, а координата long соответствует смещению в байтах внутри сегмента памяти, к которому осуществляется доступ, где выполняется обращение.
Возвращаемый var handle проверяет, что обращения выровнены в соответствии с ограничением выравнивания этой компоновки значений.
- Примечание API:
- Этот метод аналогичен вызову
MemoryLayout#varHandle(PathElement...)с пустым массивом элементов пути, но работает эффективнее, поскольку позволяет избежать создания массива varargs. Возвращаемый var handle имеет определенные ограничения режимов доступа, общие для всех var handle доступа к памяти, полученных на основе компоновок памяти. - Возвращает:
- var handle, который можно использовать для доступа к значениям, описанным этой компоновкой значений, в заданном сегменте памяти
- См. также:
© 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/ValueLayout.html