Класс GroupLayout
- Все реализованные интерфейсы:
-
Constable,MemoryLayout
public final class GroupLayout extends Object implements MemoryLayout
MemoryLayout.structLayout(MemoryLayout...)); в противном случае, если все расположения элементов выстраиваются с одинаковым начальным смещением, результирующее расположение группы называется объединением (см. MemoryLayout.unionLayout(MemoryLayout...)). Это класс типа значения; программисты должны рассматривать экземпляры, которые являются равными, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, иначе может произойти непредсказуемое поведение. Например, в будущей версии синхронизация может завершиться сбоем. Для сравнения следует использовать метод 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<GroupLayout>> |
describeConstable() |
|
boolean |
equals |
Указывает, является ли другой объект "равным" этому. |
int |
hashCode() |
Возвращает хэш-код объекта. |
boolean |
hasSize() |
Есть ли у этого расположения заданный размер? |
boolean |
isPadding() |
Является ли это расположение расположением заполнения (например, расположение, созданное из MemoryLayout.paddingLayout(long)) ? |
boolean |
isStruct() |
Является ли это расположение группы структурой? |
boolean |
isUnion() |
Является ли это расположение группы объединением? |
List<MemoryLayout> |
memberLayouts() |
Возвращает расположения элементов, связанные с этой группой. |
final Optional<String> |
name() |
Возвращает имя (если есть) ассоциированное с этим расположением. |
String |
toString() |
Возвращает строковое представление объекта. |
GroupLayout |
withAttribute |
Возвращает новое расположение памяти, которое содержит те же атрибуты, что и это расположение, плюс новый указанный атрибут. |
GroupLayout |
withBitAlignment |
Создаёт новое расположение с желаемым ограничением выравнивания. |
GroupLayout |
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
Подробное описание методов
memberLayouts
public List<MemoryLayout> memberLayouts()
- Примечание API:
- Порядок, в котором возвращаются макеты членов, соответствует порядку, в котором макеты членов были переданы одному из методов фабрики макетов группы (см.
MemoryLayout.structLayout(MemoryLayout...),MemoryLayout.unionLayout(MemoryLayout...)). - Возвращает:
- макеты членов, связанные с этой группой.
toString
public String toString()
Object- Указано:
-
toStringв интерфейсеMemoryLayout - Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление объекта.
isStruct
public boolean isStruct()
- Возвращает:
- true, если этот макет группы является структурой.
isUnion
public boolean isUnion()
- Возвращает:
- true, если этот макет группы является объединением.
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<GroupLayout>> describeConstable()
MemoryLayoutOptional, содержащий номинальный дескриптор для этого макета, если он может быть создан, или пустой Optional, если он не может быть создан.- Указано:
-
describeConstableв интерфейсеConstable - Указано:
-
describeConstableв интерфейсеMemoryLayout - Возвращает:
Optional, содержащий результирующий номинальный дескриптор, или пустойOptional, если он не может быть создан.
withName
public GroupLayout withName(String name)
Это эквивалентно следующему коду:
withAttribute(LAYOUT_NAME, name);
- Указано:
-
withNameв интерфейсеMemoryLayout - Параметры:
-
name- имя макета. - Возвращает:
- новый макет, который такой же, как этот макет, за исключением имени, связанного с ним.
- См. также:
withBitAlignment
public GroupLayout withBitAlignment(long alignmentBits)
- Указано:
-
withBitAlignmentв интерфейсеMemoryLayout - Параметры:
-
alignmentBits- ограничение выравнивания макета, выраженное в битах. - Возвращает:
- новый макет, который такой же, как этот макет, за исключением ограничения выравнивания, связанного с ним.
withAttribute
public GroupLayout withAttribute(String name, Constable value)
- Указано:
-
withAttributeв интерфейсеMemoryLayout - Параметры:
-
name- имя атрибута. -
value- значение атрибута. - Возвращает:
- новый макет памяти, который имеет те же атрибуты, что и этот макет, плюс новый указанный атрибут.
name
public final Optional<String> name()
MemoryLayoutЭто эквивалентно следующему коду:
attribute(LAYOUT_NAME).map(String.class::cast);
- Указано:
-
nameв интерфейсеMemoryLayout - Возвращает:
- имя макета (если есть).
- См. также:
attribute
public Optional<Constable> attribute(String name)
MemoryLayout- Указано:
-
attributeв интерфейсеMemoryLayout - Параметры:
-
name- имя атрибута - Возвращает:
- атрибут с заданным именем (если он существует).
attributes
public Stream<String> attributes()
MemoryLayout- Указано:
-
attributesв интерфейсеMemoryLayout - Возвращает:
- поток имен атрибутов, связанных с этим макетом.
bitAlignment
public final long bitAlignment()
MemoryLayoutA , которая является выравниванием макета в битах. Если A <= 8 , то A/8 является количеством байтов, которые должны быть выровнены для любого указателя, правильно указывающего на этот макет. Таким образом: -
A=8означает отсутствие выравнивания (в обычном смысле), что часто используется в пакетах. -
A=64означает выравнивание по слову (в LP64),A=32выравнивание по int,A=16выравнивание по short и т. д. -
A=512— самое строгое выравнивание, требуемое ABI x86/SV (для данных AVX-512).
MemoryLayout.withBitAlignment(long)), то этот метод возвращает ограничение естественного выравнивания (в битах), связанное с этим макетом.- Указано в:
-
bitAlignmentв интерфейсеMemoryLayout - Возвращает:
- ограничение выравнивания макета в битах.
hasSize
public boolean hasSize()
MemoryLayoutSequenceLayout.elementCount()). Макеты значений (см. ValueLayout) и макеты заполнения (см. MemoryLayout.paddingLayout(long)) всегда имеют указанный размер, поэтому в этих случаях этот метод всегда возвращает true.- Указано в:
-
hasSizeв интерфейсеMemoryLayout - Возвращает:
-
true, если у этого макета указан размер.
bitSize
public long bitSize()
MemoryLayout- Указано в:
-
bitSizeв интерфейсеMemoryLayout - Возвращает:
- размер макета в битах.
isPadding
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/GroupLayout.html