Spec-Zone.ru › OpenJDK 27

Интерфейс 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.
Требования к реализации:
реализующие классы и подклассы являются неизменяемыми, потокобезопасными и основанными на значениях.
Граф иерархии запечатанных классов:
Sealed class hierarchy graph for ValueLayoutSealed class hierarchy graph for ValueLayout
Начиная с версии:
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(long byteAlignment)
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным ограничением на выравнивание (в байтах).
ValueLayout withName(String name)
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным именем.
ValueLayout withOrder(ByteOrder order)
Возвращает компоновку значений с теми же характеристиками, что и у этой компоновки, но с заданным порядком байтов.
ValueLayout withoutName()
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но без имени.

Методы, объявленные в интерфейсе MemoryLayout

arrayElementVarHandle, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, scale, scaleHandle, select, sliceHandle, toString, varHandle
Модификатор и тип Метод Описание
VarHandle arrayElementVarHandle(MemoryLayout.PathElement... elements)
Создает дескриптор переменной, обращающийся к соседним элементам сегмента памяти со смещениями, выбранными заданным путем компоновки; доступные элементы имеют эту компоновку, а исходная компоновка в пути — эта компоновка.
long byteAlignment()
Возвращает ограничение на выравнивание, связанное с этой компоновкой, выраженное в байтах.
long byteOffset(MemoryLayout.PathElement... elements)
Вычисляет смещение в байтах компоновки, выбранной заданным путем компоновки, исходной компоновкой в котором является эта компоновка.
MethodHandle byteOffsetHandle(MemoryLayout.PathElement... elements)
Создает дескриптор метода, вычисляющий смещение в байтах компоновки, выбранной заданным путем компоновки, исходной компоновкой в котором является эта компоновка.
long byteSize()
Возвращает размер компоновки в байтах.
boolean equals(Object other)
Сравнивает указанный объект с этой компоновкой на равенство.
int hashCode()
Возвращает хеш-код этой компоновки.
Optional<String> name()
Возвращает имя (если оно есть), связанное с этой компоновкой.
long scale(long offset, long index)
Возвращает offset + (byteSize() * index).
MethodHandle scaleHandle()
Возвращает дескриптор метода, который можно использовать для вызова MemoryLayout.scale(long, long) для этой компоновки.
MemoryLayout select(MemoryLayout.PathElement... elements)
Возвращает компоновку, выбранную из предоставленного пути, исходной компоновкой в котором является эта компоновка.
MethodHandle sliceHandle(MemoryLayout.PathElement... elements)
Создает дескриптор метода, который принимает сегмент памяти и возвращает срез, соответствующий компоновке, выбранной заданным путем компоновки, исходной компоновкой в котором является эта компоновка.
String toString()
Возвращает строковое представление этой компоновки.
VarHandle varHandle(MemoryLayout.PathElement... elements)
Создает дескриптор переменной, обращающийся к сегменту памяти по смещению, выбранному заданным путем компоновки, исходной компоновкой в котором является эта компоновка.

Подробное описание полей

ADDRESS

static final AddressLayout ADDRESS
Константа компоновки адреса, размер которой совпадает с размером машинного адреса (size_t), выравнивание по байтам установлено в sizeof(size_t), а порядок байтов — в ByteOrder.nativeOrder().

JAVA_BYTE

static final ValueLayout.OfByte JAVA_BYTE
Константа компоновки значений, размер которой совпадает с размером типа Java byte, выравнивание по байтам установлено в 1, а порядок байтов — в ByteOrder.nativeOrder().

JAVA_BOOLEAN

static final ValueLayout.OfBoolean JAVA_BOOLEAN
Константа компоновки значений, размер которой совпадает с размером типа Java boolean, выравнивание по байтам установлено в 1, а порядок байтов — в ByteOrder.nativeOrder().

JAVA_CHAR

static final ValueLayout.OfChar JAVA_CHAR
Константа компоновки значений, размер которой совпадает с размером типа Java char, выравнивание по байтам установлено в 2, а порядок байтов — в ByteOrder.nativeOrder().

JAVA_SHORT

static final ValueLayout.OfShort JAVA_SHORT
Константа компоновки значений, размер которой совпадает с размером типа Java short, выравнивание по байтам установлено в 2, а порядок байтов — в ByteOrder.nativeOrder().

JAVA_INT

static final ValueLayout.OfInt JAVA_INT
Константа компоновки значений, размер которой совпадает с размером типа Java int, выравнивание по байтам установлено в 4, а порядок байтов — в ByteOrder.nativeOrder().

JAVA_LONG

static final ValueLayout.OfLong JAVA_LONG
Константа компоновки значений, размер которой совпадает с размером типа Java long, выравнивание по байтам установлено в 8, а порядок байтов — в ByteOrder.nativeOrder().

JAVA_FLOAT

static final ValueLayout.OfFloat JAVA_FLOAT
Константа компоновки значений, размер которой совпадает с размером типа Java float, выравнивание по байтам установлено в 4, а порядок байтов — в ByteOrder.nativeOrder().

JAVA_DOUBLE

static final ValueLayout.OfDouble JAVA_DOUBLE
Константа компоновки значений, размер которой совпадает с размером типа Java 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
Константа невыровненной компоновки значений, размер которой совпадает с размером типа Java char, а порядок байтов установлен в ByteOrder.nativeOrder(). Эквивалентна следующему коду:
JAVA_CHAR.withByteAlignment(1);
Примечание по API:
При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут вызывать проблемы с производительностью и переносимостью.

JAVA_SHORT_UNALIGNED

static final ValueLayout.OfShort JAVA_SHORT_UNALIGNED
Константа невыровненной компоновки значений, размер которой совпадает с размером типа Java short, а порядок байтов установлен в ByteOrder.nativeOrder(). Эквивалентна следующему коду:
JAVA_SHORT.withByteAlignment(1);
Примечание по API:
При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут вызывать проблемы с производительностью и переносимостью.

JAVA_INT_UNALIGNED

static final ValueLayout.OfInt JAVA_INT_UNALIGNED
Константа невыровненной компоновки значений, размер которой совпадает с размером типа Java int, а порядок байтов установлен в ByteOrder.nativeOrder(). Эквивалентна следующему коду:
JAVA_INT.withByteAlignment(1);
Примечание по API:
При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут вызывать проблемы с производительностью и переносимостью.

JAVA_LONG_UNALIGNED

static final ValueLayout.OfLong JAVA_LONG_UNALIGNED
Константа невыровненной компоновки значений, размер которой совпадает с размером типа Java long, а порядок байтов установлен в ByteOrder.nativeOrder(). Эквивалентна следующему коду:
JAVA_LONG.withByteAlignment(1);
Примечание по API:
При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут вызывать проблемы с производительностью и переносимостью.

JAVA_FLOAT_UNALIGNED

static final ValueLayout.OfFloat JAVA_FLOAT_UNALIGNED
Константа невыровненной компоновки значений, размер которой совпадает с размером типа Java float, а порядок байтов установлен в ByteOrder.nativeOrder(). Эквивалентна следующему коду:
JAVA_FLOAT.withByteAlignment(1);
Примечание по API:
При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут вызывать проблемы с производительностью и переносимостью.

JAVA_DOUBLE_UNALIGNED

static final ValueLayout.OfDouble JAVA_DOUBLE_UNALIGNED
Константа невыровненной компоновки значений, размер которой совпадает с размером типа Java double, а порядок байтов установлен в ByteOrder.nativeOrder(). Эквивалентна следующему коду:
JAVA_DOUBLE.withByteAlignment(1);
Примечание по API:
При использовании невыровненных компоновок значений следует соблюдать осторожность, поскольку они могут вызывать проблемы с производительностью и переносимостью.

Подробное описание методов

order

ByteOrder order()
Возвращает порядок байтов значения.
Возвращает:
порядок байтов значения

withOrder

ValueLayout withOrder(ByteOrder order)
Возвращает компоновку значений с теми же характеристиками, что и у этой компоновки, но с заданным порядком байтов.
Параметры:
order — требуемый порядок байтов
Возвращает:
компоновку значений с теми же характеристиками, что и у этой компоновки, но с заданным порядком байтов

withoutName

ValueLayout withoutName()
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но без имени.
Определено в:
withoutName в интерфейсе MemoryLayout
Возвращает:
компоновку памяти с теми же характеристиками, что и у этой компоновки, но без имени
См. также:
  • MemoryLayout.name()

carrier

Class<?> carrier()
Возвращает тип носителя, связанный с этой компоновкой значений.
Возвращает:
тип носителя, связанный с этой компоновкой значений

withName

ValueLayout withName(String name)
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным именем.
Определено в:
withName в интерфейсе MemoryLayout
Параметры:
name — имя компоновки
Возвращает:
компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным именем
См. также:
  • MemoryLayout.name()

withByteAlignment

ValueLayout withByteAlignment(long byteAlignment)
Возвращает компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным ограничением на выравнивание (в байтах).
Определено в:
withByteAlignment в интерфейсе MemoryLayout
Параметры:
byteAlignment — ограничение на выравнивание компоновки, выраженное в байтах
Возвращает:
компоновку памяти с теми же характеристиками, что и у этой компоновки, но с заданным ограничением на выравнивание (в байтах)
Вызывает исключение:
IllegalArgumentException — если byteAlignment не является степенью двойки

varHandle

VarHandle varHandle()
Возвращает дескриптор переменной, который можно использовать для доступа к значениям, описываемым этой компоновкой значений, в заданном сегменте памяти.

Тип var возвращенного дескриптора переменной — это тип носителя этой компоновки значений, а список типов координат — (MemorySegment, long), где координата сегмента памяти соответствует сегменту памяти, к которому будет осуществляться доступ, а координата long соответствует смещению в байтах в доступном сегменте памяти, по которому выполняется доступ.

Возвращенный дескриптор переменной проверяет, что доступ осуществляется с выравниванием, соответствующим ограничению на выравнивание этой компоновки значений.

Примечание по API:
Этот метод аналогичен, но эффективнее, чем вызов MemoryLayout#varHandle(PathElement...) с пустым массивом элементов пути, поскольку позволяет избежать создания массива аргументов varargs., Возвращенный дескриптор переменной имеет определенные ограничения режимов доступа, общие для всех дескрипторов переменных доступа к памяти, полученных на основе компоновок памяти.
Возвращает:
дескриптор переменной, который можно использовать для доступа к значениям, описываемым этой компоновкой значений, в заданном сегменте памяти
См. также:
  • MemoryLayout.varHandle(PathElement...)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, способы решения проблем и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API