Spec-Zone.ru › OpenJDK 25

Интерфейс 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 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(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

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

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 handle, который можно использовать для доступа к значениям, описанным этой компоновкой значений, в заданном сегменте памяти.

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

Возвращаемый var handle проверяет, что обращения выровнены в соответствии с ограничением выравнивания этой компоновки значений.

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/foreign/ValueLayout.html

Spec-Zone.ru

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