Интерфейс 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 interface |
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() |
Возвращает дескриптор переменной, который можно использовать для доступа к значениям, описываемым этой компоновкой значений, в заданном сегменте памяти. |
ValueLayout |
withByteAlignment |
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным ограничением на выравнивание (в байтах). |
ValueLayout |
withName |
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным именем. |
ValueLayout |
withOrder |
Возвращает компоновку значений с теми же характеристиками, что и у этой компоновки, но с заданным порядком байтов. |
ValueLayout |
withoutName() |
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но без имени. |
Методы, объявленные в интерфейсе 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 |
Создает дескриптор переменной, обращающийся к сегменту памяти по смещению, выбранному заданным путем компоновки, исходной компоновкой в котором является эта компоновка. |
Подробное описание полей
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 возвращенного дескриптора переменной — это тип носителя этой компоновки значений, а список типов координат — (MemorySegment, long), где координата сегмента памяти соответствует сегменту памяти, к которому будет осуществляться доступ, а координата long соответствует смещению в байтах в доступном сегменте памяти, по которому выполняется доступ.
Возвращенный дескриптор переменной проверяет, что доступ осуществляется с выравниванием, соответствующим ограничению на выравнивание этой компоновки значений.
- Примечание по API:
- Этот метод аналогичен, но эффективнее, чем вызов
MemoryLayout#varHandle(PathElement...)с пустым массивом элементов пути, поскольку позволяет избежать создания массива аргументов varargs., Возвращенный дескриптор переменной имеет определенные ограничения режимов доступа, общие для всех дескрипторов переменных доступа к памяти, полученных на основе компоновок памяти. - Возвращает:
- дескриптор переменной, который можно использовать для доступа к значениям, описываемым этой компоновкой значений, в заданном сегменте памяти
- См. также:
© 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.