Класс SequenceLayout
- Все реализуемые интерфейсы:
-
Constable,MemoryLayout
public final class SequenceLayout extends Object implements MemoryLayout
MemoryLayout.sequenceLayout(3, MemoryLayout.valueLayout(32, ByteOrder.BIG_ENDIAN));
эквивалентен следующему макету:
MemoryLayout.structLayout(
MemoryLayout.valueLayout(32, ByteOrder.BIG_ENDIAN),
MemoryLayout.valueLayout(32, ByteOrder.BIG_ENDIAN),
MemoryLayout.valueLayout(32, ByteOrder.BIG_ENDIAN));
Это безусловный класс; программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, в противном случае может произойти непредсказуемое поведение. Например, в будущих версиях синхронизация может завершиться неудачей. Для сравнений следует использовать метод equals.
Если не указано иное, передача null аргумента или аргумента массива, содержащего один или несколько null элементов методу в этом классе, приводит к исключению NullPointerException.
- Требования к реализации:
- Этот класс неизменяем и потокобезопасен.
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе jdk.incubator.foreign.MemoryLayout
MemoryLayout.PathElement
Краткое описание полей
Поля, объявленные в интерфейсе jdk.incubator.foreign.MemoryLayout
LAYOUT_NAME
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Optional<Constable> |
attribute |
Возвращает атрибут с заданным именем (если он существует). |
Stream<String> |
attributes() |
Возвращает поток имён атрибутов, связанных с этим макетом. |
final long |
bitAlignment() |
Возвращает ограничение выравнивания, связанное с этим макетом, выраженное в битах. |
long |
bitSize() |
Вычисляет размер макета в битах. |
Optional<DynamicConstantDesc<SequenceLayout>> |
describeConstable() |
|
OptionalLong |
elementCount() |
Возвращает количество элементов этого макета последовательности (если оно задано). |
MemoryLayout |
elementLayout() |
Возвращает макет элемента, связанный с этим макетом последовательности. |
boolean |
equals |
Указывает, является ли другой объект "равным" данному. |
SequenceLayout |
flatten() |
Возвращает новый, уплощённый макет последовательности, элементный макет которого является первым не-последовательным макетом элемента, найденным путём рекурсивного обхода элементных макетов этого макета последовательности. |
int |
hashCode() |
Возвращает хэш-код объекта. |
boolean |
hasSize() |
Указывает, задан ли размер макета? |
boolean |
isPadding() |
Является ли этот макет макетом заполнения (например, макет, созданный с помощью MemoryLayout.paddingLayout(long)) ? |
final Optional<String> |
name() |
Возвращает имя (если оно есть), связанное с этим макетом. |
SequenceLayout |
reshape |
Возвращает новый макет последовательности, в котором элементные макеты в уплощённом представлении этого макета последовательности (см. flatten()) переупорядочиваются в один или несколько вложенных макетов последовательности в соответствии с предоставленными количествами элементов. |
String |
toString() |
Возвращает строковое представление объекта. |
SequenceLayout |
withAttribute |
Возвращает новый макет памяти, содержащий те же атрибуты, что и этот макет, плюс новый указанный атрибут. |
SequenceLayout |
withBitAlignment |
Создаёт новый макет с желаемым ограничением выравнивания. |
SequenceLayout |
withElementCount |
Получает новый макет последовательности с тем же макетом элемента, ограничениями выравнивания и именем, что и этот макет последовательности, но с новым указанным количеством элементов. |
SequenceLayout |
withName |
Создаёт новый макет с желаемым именем макета. |
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе jdk.incubator.foreign.MemoryLayout
attribute, attributes, bitAlignment, bitOffset, bitOffsetHandle, bitSize, byteAlignment, byteOffset, byteOffsetHandle, byteSize, hasSize, isPadding, map, name, select, sliceHandle, varHandle
Подробное описание методов
elementLayout
public MemoryLayout elementLayout()
- Возвращает:
- Компоновку элемента, связанную с этой компоновкой последовательности.
elementCount
public OptionalLong elementCount()
- Возвращает:
- количество элементов этой компоновки последовательности (если есть).
withElementCount
public SequenceLayout withElementCount(long elementCount)
- Параметры:
-
elementCount- новое количество элементов. - Возвращает:
- новую последовательность с заданным количеством элементов.
- Исключения:
-
IllegalArgumentException- еслиelementCount < 0.
reshape
public SequenceLayout reshape(long... elementCounts)
flatten()) перегруппированы в одну или несколько вложенных компоновок последовательности в соответствии с предоставленными количествами элементов. Эта трансформация сохраняет размер макета; то есть, умножение предоставленных количеств элементов должно давать такое же количество элементов, как и уплощенная проекция этой компоновки последовательности. Например, для компоновки последовательности типа:
var seq = MemoryLayout.sequenceLayout(4, MemoryLayout.sequenceLayout(3, MemoryLayouts.JAVA_INT));
вызов seq.reshape(2, 6) даст следующую компоновку последовательности:
var reshapeSeq = MemoryLayout.sequenceLayout(2, MemoryLayout.sequenceLayout(6, MemoryLayouts.JAVA_INT));
Если одно из предоставленных количеств элементов является специальным значением -1, то количество элементов в этой позиции будет выведено из оставшихся количеств элементов и количества элементов уплощенной проекции этого макета. Например, макет, эквивалентный вышеуказанному reshapeSeq, также может быть вычислен следующим образом:
var reshapeSeqImplicit1 = seq.reshape(-1, 6);
var reshapeSeqImplicit2 = seq.reshape(2, -1);
- Параметры:
-
elementCounts- массив количеств элементов, из которых не более одного может быть-1. - Возвращает:
- новую компоновку последовательности, где компоновки элементов в уплощенной проекции этой компоновки последовательности (см.
flatten()) перегруппированы в одну или несколько вложенных компоновок последовательности. - Исключения:
-
UnsupportedOperationException- если у этой компоновки последовательности нет количества элементов. -
IllegalArgumentException- если два или более количеств элементов установлены в-1, или если одно или несколько количеств элементов равно<= 0(кроме-1) или, если после любого необходимого вывода умножение количеств элементов не даёт такое же количество элементов, как уплощенная проекция этой компоновки.
flatten
public SequenceLayout flatten()
var seq = MemoryLayout.sequenceLayout(4, MemoryLayout.sequenceLayout(3, MemoryLayouts.JAVA_INT));
вызов seq.flatten() даст следующую компоновку последовательности:
var flattenedSeq = MemoryLayout.sequenceLayout(12, MemoryLayouts.JAVA_INT);
- Возвращает:
- новую компоновку последовательности с таким же размером, как и этот макет (но, возможно, с другим количеством элементов), чья компоновка элемента не является компоновкой последовательности.
- Исключения:
-
UnsupportedOperationException- если у этой компоновки последовательности или одной из вложенных компоновок последовательности, которые уплощаются, нет количества элементов.
toString
public String toString()
Object- Определено в:
-
toStringв интерфейсеMemoryLayout - Переопределено в:
-
toStringв классеObject - Возвращает:
- строковое представление объекта.
equals
public boolean equals(Object other)
Object Метод equals реализует отношение эквивалентности на ссылках на объекты, отличных от null:
- Он рефлексивен: для любой ссылки на объект, отличной от null,
x,x.equals(x)должен возвращатьtrue. - Он симметричен: для любых значений ссылок на объекты, отличные от null,
xиy,x.equals(y)должен возвращатьtrueтогда и только тогда, когдаy.equals(x)возвращаетtrue. - Он транзитивен: для любых значений ссылок на объекты, отличные от null,
x,y, иz, еслиx.equals(y)возвращаетtrueиy.equals(z)возвращаетtrue, тоx.equals(z)должен возвращатьtrue. - Он постоянен: для любых значений ссылок на объекты, отличные от null,
xиy, многократные вызовыx.equals(y)последовательно возвращаютtrueили последовательно возвращаютfalse, при условии, что никакие данные, используемые в сравненияхequalsобъектов, не модифицируются. - Для любого значения ссылки на объект, отличного от null,
x,x.equals(null)должен возвращатьfalse.
Отношение эквивалентности разбивает элементы, на которые она действует, на классы эквивалентности; все члены класса эквивалентности равны друг другу. Члены класса эквивалентности взаимозаменяемы, по крайней мере, для некоторых целей.
- Определено в:
-
equalsв интерфейсеMemoryLayout - Параметры:
-
other- объект ссылки для сравнения. - Возвращает:
-
trueесли этот объект такой же, как аргумент obj;falseв противном случае. - См. также:
hashCode
public int hashCode()
ObjectHashMap. Общий контракт hashCode:
- Всякий раз, когда он вызывается для одного и того же объекта более чем один раз во время выполнения Java-приложения, метод
hashCodeдолжен последовательно возвращать то же целое число, при условии, что никакие данные, используемые в сравненияхequalsобъекта, не модифицированы. Это целое число не обязательно должно оставаться постоянным от одного выполнения приложения к другому выполнению того же приложения. - Если два объекта равны согласно методу
equals, то вызов методаhashCodeдля каждого из двух объектов должен генерировать один и тот же целочисленный результат. - Не требуется, чтобы если два объекта не равны согласно методу
equals, то вызов методаhashCodeдля каждого из двух объектов генерировал разные целочисленные результаты. Однако программист должен понимать, что выработка различных целочисленных результатов для неравных объектов может улучшить производительность хеш-таблиц.
- Определено в:
-
hashCodeв интерфейсеMemoryLayout - Возвращает:
- значение хеш-кода для этого объекта.
- См. также:
describeConstable
public Optional<DynamicConstantDesc<SequenceLayout>> describeConstable()
MemoryLayoutOptional, содержащий номинальный дескриптор для этого макета, если его можно создать, или пустой Optional, если его нельзя создать.- Определено в:
-
describeConstableв интерфейсеConstable - Определено в:
-
describeConstableв интерфейсеMemoryLayout - Возвращает:
Optional, содержащий полученный номинальный дескриптор, или пустойOptional, если его нельзя создать.
withName
public SequenceLayout withName(String name)
Это эквивалентно следующему коду:
withAttribute(LAYOUT_NAME, name);
- Определено в:
-
withNameв интерфейсеMemoryLayout - Параметры:
-
name- имя макета. - Возвращает:
- новый макет, такой же, как этот макет, за исключением имени, связанного с ним.
- См. также:
сВыравниваниемВБитах
public SequenceLayout withBitAlignment(long alignmentBits)
- Указано в:
-
withBitAlignmentв интерфейсеMemoryLayout - Параметры:
-
alignmentBits- ограничение выравнивания компоновки, выраженное в битах. - Возвращает:
- новую компоновку, идентичную этой, за исключением ограничения выравнивания.
сАтрибутом
public SequenceLayout withAttribute(String name, Constable value)
- Указано в:
-
withAttributeв интерфейсеMemoryLayout - Параметры:
-
name- имя атрибута. -
value- значение атрибута. - Возвращает:
- новую компоновку памяти, содержащую те же атрибуты, что и эта компоновка, плюс новый указанный атрибут.
имя
public final Optional<String> name()
MemoryLayoutЭквивалентно следующему коду:
attribute(LAYOUT_NAME).map(String.class::cast);
- Указано в:
-
nameв интерфейсеMemoryLayout - Возвращает:
- имя компоновки (если есть).
- См. также:
атрибут
public Optional<Constable> attribute(String name)
MemoryLayout- Указано в:
-
attributeв интерфейсеMemoryLayout - Параметры:
-
name- имя атрибута - Возвращает:
- атрибут с данным именем (если он существует).
атрибуты
public Stream<String> attributes()
MemoryLayout- Указано в:
-
attributesв интерфейсеMemoryLayout - Возвращает:
- поток имён атрибутов, связанных с этой компоновкой.
выравниваниеВБитах
public final long bitAlignment()
MemoryLayoutA, которая является битовым выравниванием компоновки. Если A <= 8, то A/8 — это количество байт, которые должны быть выровнены для любого указателя, который правильно указывает на эту компоновку. Таким образом: -
A=8означает отсутствие выравнивания (в обычном смысле), что обычно используется в пакетах. -
A=64означает выравнивание по словам (в LP64),A=32по целым числам,A=16по коротким целым числам и т. д. -
A=512— это самое строгое выравнивание, необходимое x86/SV ABI (для данных AVX-512).
MemoryLayout.withBitAlignment(long)), то этот метод возвращает ограничение естественного выравнивания (в битах) этой компоновки.- Указано в:
-
bitAlignmentв интерфейсеMemoryLayout - Возвращает:
- ограничение выравнивания компоновки в битах.
имеетРазмер
public boolean hasSize()
MemoryLayoutelementCount()). Компоновки значений (см. ValueLayout) и компоновки заполнения (см. MemoryLayout.paddingLayout(long)) всегда имеют указанный размер, поэтому этот метод всегда возвращает true в этих случаях.- Указано в:
-
hasSizeв интерфейсеMemoryLayout - Возвращает:
-
true, если у этой компоновки есть указанный размер.
размерВБитах
public long bitSize()
MemoryLayout- Указано в:
-
bitSizeв интерфейсеMemoryLayout - Возвращает:
- размер компоновки в битах.
являетсяЗаполнением
public boolean isPadding()
MemoryLayoutMemoryLayout.paddingLayout(long)) ?- Указано в:
-
isPaddingв интерфейсеMemoryLayout - Возвращает:
- true, если эта компоновка является компоновкой заполнения.
© 1993, 2021, 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/17/docs/api/jdk.incubator.foreign/jdk/incubator/foreign/SequenceLayout.html