Интерфейс SequenceLayout
- Все суперинтерфейсы:
MemoryLayoutPREVIEW
public sealed interface SequenceLayout extends MemoryLayoutPREVIEW
SequenceLayout — это предварительный API платформы Java. MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN));
MemoryLayout.structLayout(
ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN),
ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN),
ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN));
- Требования к реализации:
- Этот класс неизменяемый, потокобезопасный и базированный на значениях.
- С момента:
- 19
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе java.lang.foreign.MemoryLayoutПРЕДПРОСМОТР
MemoryLayout.PathElementPREVIEW
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
long |
elementCount() |
Возвращает количество элементов данного макета последовательности. |
MemoryLayoutPREVIEW |
elementLayout() |
Возвращает макет элемента данного макета последовательности. |
SequenceLayoutPREVIEW |
flatten() |
Возвращает уплощенный макет последовательности. |
SequenceLayoutPREVIEW |
reshape |
Переупорядочивает элементы в этом макете последовательности в многомерный макет последовательности. |
SequenceLayoutPREVIEW |
withByteAlignment |
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с заданным ограничением выравнивания (в байтах). |
SequenceLayoutPREVIEW |
withElementCount |
Возвращает макет последовательности с теми же характеристиками, что и этот макет, но с заданным количеством элементов. |
SequenceLayoutPREVIEW |
withName |
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с заданным именем. |
Методы, объявленные в интерфейсе java.lang.foreign.MemoryLayoutПРЕДПРОСМОТР
byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, select, sliceHandle, toString, varHandle, withoutName
Подробное описание методов
elementLayout
MemoryLayoutPREVIEW elementLayout()
- Возвращает:
- макет элемента данного макета последовательности
elementCount
long elementCount()
- Возвращает:
- количество элементов данного макета последовательности
withElementCount
SequenceLayoutPREVIEW withElementCount(long elementCount)
- Параметры:
-
elementCount- новое количество элементов. - Возвращает:
- макет последовательности с теми же характеристиками, что и этот макет, но с заданным количеством элементов
- Исключения:
-
IllegalArgumentException- еслиelementCountотрицательно. -
IllegalArgumentException- еслиelementLayout.bitSize() * elementCountпереполняется.
reshape
SequenceLayoutPREVIEW reshape(long... elementCounts)
Например, для макета последовательности типа:
var seq = MemoryLayout.sequenceLayout(4, MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT));
seq.reshape(2, 6) приведет к следующему макету последовательности: var reshapeSeq = MemoryLayout.sequenceLayout(2, MemoryLayout.sequenceLayout(6, ValueLayout.JAVA_INT));
Если одно из предоставленных количеств элементов имеет специальное значение -1, то количество элементов в этой позиции будет выведено из оставшихся количеств элементов и количества элементов в уплощенном проекте этого макета. Например, макет, эквивалентный вышеупомянутому reshapeSeq, также может быть вычислен следующим образом:
var reshapeSeqImplicit1 = seq.reshape(-1, 6);
var reshapeSeqImplicit2 = seq.reshape(2, -1);
- Параметры:
-
elementCounts- массив количеств элементов, из которых не более одного может быть-1. - Возвращает:
- макет последовательности, где макеты элементов в уплощенном проекте этого макета последовательности (см.
flatten()) переупорядочиваются в один или несколько вложенных макетов последовательности. - Исключения:
-
IllegalArgumentException- если два или более количеств элементов установлены в-1, или если одно или несколько количеств элементов установлены в<= 0(кроме-1), или если после всех необходимых вычислений произведение количеств элементов не равно количеству элементов в уплощенном проекте данного макета последовательности.
flatten
SequenceLayoutPREVIEW flatten()
MemoryLayout flatElementLayout(SequenceLayout sequenceLayout) {
return switch (sequenceLayout.elementLayout()) {
case SequenceLayout nestedSequenceLayout -> flatElementLayout(nestedSequenceLayout);
case MemoryLayout layout -> layout;
};
}
Это преобразование сохраняет размер макета; вложенные макеты последовательности в этом макете последовательности будут удалены, а их количества элементов будут включены в количество элементов возвращаемого макета последовательности. Например, для макета последовательности типа:
var seq = MemoryLayout.sequenceLayout(4, MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT));
seq.flatten() приведет к следующему макету последовательности: var flattenedSeq = MemoryLayout.sequenceLayout(12, ValueLayout.JAVA_INT);
- Возвращает:
- макет последовательности того же размера, что и этот макет (но, возможно, с другим количеством элементов), макет элемента которого не является макетом последовательности.
withName
SequenceLayoutPREVIEW withName(String name)
- Определено в:
-
withNameв интерфейсеMemoryLayoutPREVIEW - Параметры:
-
name- имя макета. - Возвращает:
- макет памяти с теми же характеристиками, что и этот макет, но с заданным именем
- См. также:
withByteAlignment
SequenceLayoutPREVIEW withByteAlignment(long byteAlignment)
- Определено в:
-
withByteAlignmentв интерфейсеMemoryLayoutPREVIEW - Параметры:
-
byteAlignment- ограничение выравнивания макета, выраженное в байтах. - Возвращает:
- макет памяти с теми же характеристиками, что и этот макет, но с заданным ограничением выравнивания (в байтах)
- Исключения:
-
IllegalArgumentException- еслиbyteAlignmentне является степенью двойки. -
IllegalArgumentException- еслиbyteAlignment < elementLayout().byteAlignment().
© 1993, 2023, 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/21/docs/api/java.base/java/lang/foreign/SequenceLayout.html
SequenceLayoutтолько при включенных предварительных функциях.