Spec-Zone.ru › OpenJDK 24

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

Вложенные классы/интерфейсы, объявленные в интерфейсе java.lang.foreign.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, который может использоваться для доступа к значениям, описанным этим макетом значения, в заданном сегменте памяти.
ValueLayout withByteAlignment(long byteAlignment)
Возвращает макет памяти с такими же характеристиками, как у этого макета, но с заданным ограничением выравнивания (в байтах).
ValueLayout withName(String name)
Возвращает макет памяти с такими же характеристиками, как у этого макета, но с заданным именем.
ValueLayout withOrder(ByteOrder order)
Возвращает макет значения с такими же характеристиками, как у этого макета, но с заданным порядком байтов.
ValueLayout withoutName()
Возвращает макет памяти с такими же характеристиками, как у этого макета, но без имени.

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

arrayElementVarHandle, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, scale, scaleHandle, select, sliceHandle, toString, varHandle
END_OF_DOCUMENT_MARKER

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

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

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

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

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

© 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/ValueLayout.html

Spec-Zone.ru

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