Spec-Zone.ru › OpenJDK 21

Интерфейс SequenceLayout

Все суперинтерфейсы:
MemoryLayoutPREVIEW
public sealed interface SequenceLayout extends MemoryLayoutPREVIEW
SequenceLayout — это предварительный API платформы Java.
Программы могут использовать SequenceLayout только при включенных предварительных функциях.
Предварительные функции могут быть удалены в будущих версиях или обновлены до постоянных функций платформы 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(long... elementCounts)
Переупорядочивает элементы в этом макете последовательности в многомерный макет последовательности.
SequenceLayoutPREVIEW withByteAlignment(long byteAlignment)
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с заданным ограничением выравнивания (в байтах).
SequenceLayoutPREVIEW withElementCount(long elementCount)
Возвращает макет последовательности с теми же характеристиками, что и этот макет, но с заданным количеством элементов.
SequenceLayoutPREVIEW withName(String name)
Возвращает макет памяти с теми же характеристиками, что и этот макет, но с заданным именем.

Методы, объявленные в интерфейсе 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 - имя макета.
Возвращает:
макет памяти с теми же характеристиками, что и этот макет, но с заданным именем
См. также:
  • MemoryLayout.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

Spec-Zone.ru

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