Интерфейс SequenceLayout
- Все суперинтерфейсы:
MemoryLayout
public sealed interface SequenceLayout extends MemoryLayout
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));
- Требования к реализации:
- Этот класс неизменяемый, потокобезопасный и базируемый на значениях.
- С:
- 22
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе java.lang.foreign.MemoryLayout
MemoryLayout.PathElement
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
long |
elementCount() |
Возвращает количество элементов этого макета последовательности. |
MemoryLayout |
elementLayout() |
Возвращает макет элемента этого макета последовательности. |
SequenceLayout |
flatten() |
Возвращает сплюснутый макет последовательности. |
SequenceLayout |
reshape |
Переупорядочивает элементы в этом макете последовательности в многомерный макет последовательности. |
SequenceLayout |
withByteAlignment |
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с заданным ограничением выравнивания (в байтах). |
SequenceLayout |
withElementCount |
Возвращает макет последовательности с теми же характеристиками, что и этот макет, но с заданным количеством элементов. |
SequenceLayout |
withName |
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с заданным именем. |
Методы, объявленные в интерфейсе java.lang.foreign.MemoryLayout
arrayElementVarHandle, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, scale, scaleHandle, select, sliceHandle, toString, varHandle, withoutName
Подробное описание методов
elementLayout
MemoryLayout elementLayout()
- Возвращает:
- макет элемента этого макета последовательности
elementCount
long elementCount()
- Возвращает:
- количество элементов этого макета последовательности
withElementCount
SequenceLayout withElementCount(long elementCount)
- Параметры:
-
elementCount- новое количество элементов - Возвращает:
- макет последовательности с теми же характеристиками, что и этот макет, но с заданным количеством элементов
- Исключения:
-
IllegalArgumentException- еслиelementCountотрицательное -
IllegalArgumentException- еслиelementLayout.bitSize() * elementCountпереполняется
reshape
SequenceLayout 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, или если одно или несколько количеств элементов отрицательны (кроме-1) или, если после необходимой инференции произведение количеств элементов не равно количеству элементов сплющенной проекции этого макета последовательности
flatten
SequenceLayout 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
SequenceLayout withName(String name)
- Определено в:
-
withNameв интерфейсеMemoryLayout - Параметры:
-
name- имя макета - Возвращает:
- макет памяти с теми же характеристиками, что и этот макет, но с заданным именем
- См. также:
withByteAlignment
SequenceLayout withByteAlignment(long byteAlignment)
- Определено в:
-
withByteAlignmentв интерфейсеMemoryLayout - Параметры:
-
byteAlignment- ограничение выравнивания макета, выраженное в байтах - Возвращает:
- макет памяти с теми же характеристиками, что и этот макет, но с заданным ограничением выравнивания (в байтах)
- Исключения:
-
IllegalArgumentException- еслиbyteAlignmentне является степенью двойки -
IllegalArgumentException- еслиbyteAlignment < elementLayout().byteAlignment()
© 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/SequenceLayout.html