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