Spec-Zone.ru › OpenJDK 17

Класс GroupLayout

java.lang.Object
jdk.incubator.foreign.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(String name)
Возвращает атрибут с заданным именем (если он существует).
Stream<String> attributes()
Возвращает поток имён атрибутов, связанных с этим расположением.
final long bitAlignment()
Возвращает ограничение выравнивания, связанное с этим расположением, в битах.
long bitSize()
Вычисляет размер расположения в битах.
Optional<DynamicConstantDesc<GroupLayout>> describeConstable()
Возвращает Optional, содержащий номинальный дескриптор для этого расположения, если он может быть построен, или пустой Optional, если он не может быть построен.
boolean equals(Object other)
Указывает, является ли другой объект "равным" этому.
int hashCode()
Возвращает хэш-код объекта.
boolean hasSize()
Есть ли у этого расположения заданный размер?
boolean isPadding()
Является ли это расположение расположением заполнения (например, расположение, созданное из MemoryLayout.paddingLayout(long)) ?
boolean isStruct()
Является ли это расположение группы структурой?
boolean isUnion()
Является ли это расположение группы объединением?
List<MemoryLayout> memberLayouts()
Возвращает расположения элементов, связанные с этой группой.
final Optional<String> name()
Возвращает имя (если есть) ассоциированное с этим расположением.
String toString()
Возвращает строковое представление объекта.
GroupLayout withAttribute(String name, Constable value)
Возвращает новое расположение памяти, которое содержит те же атрибуты, что и это расположение, плюс новый указанный атрибут.
GroupLayout withBitAlignment(long alignmentBits)
Создаёт новое расположение с желаемым ограничением выравнивания.
GroupLayout withName(String name)
Создаёт новое расположение с желаемым именем расположения.

Методы, объявленные в классе 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 в противном случае.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Описание скопировано из класса: Object
Возвращает хэш-код для объекта. Этот метод поддерживается для использования в хэш-таблицах, таких как предоставляемые HashMap.

Общий контракт hashCode таков:

  • Всякий раз, когда он вызывается для одного и того же объекта более одного раза во время выполнения Java-приложения, метод hashCode должен последовательно возвращать одно и то же целое число, при условии, что информация, используемая в сравнениях equals для объекта, не изменяется. Это целое число не обязательно должно оставаться постоянным от одного выполнения приложения к другому выполнению того же приложения.
  • Если два объекта равны в соответствии с методом equals, то вызов метода hashCode для каждого из двух объектов должен производить один и тот же целочисленный результат.
  • Не требуется, чтобы если два объекта не равны в соответствии с методом equals, то вызов метода hashCode для каждого из двух объектов должен производить различные целочисленные результаты. Однако программист должен понимать, что получение различных целочисленных результатов для неравных объектов может улучшить производительность хэш-таблиц.
Указано:
hashCode в интерфейсе MemoryLayout
Возвращает:
хэш-код для этого объекта.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

describeConstable

public Optional<DynamicConstantDesc<GroupLayout>> describeConstable()
Описание скопировано из интерфейса: MemoryLayout
Возвращает Optional, содержащий номинальный дескриптор для этого макета, если он может быть создан, или пустой Optional, если он не может быть создан.
Указано:
describeConstable в интерфейсе Constable
Указано:
describeConstable в интерфейсе MemoryLayout
Возвращает:
Optional, содержащий результирующий номинальный дескриптор, или пустой Optional, если он не может быть создан.

withName

public GroupLayout withName(String name)
Создает новый макет, который имеет желаемое имя макета.

Это эквивалентно следующему коду:


    withAttribute(LAYOUT_NAME, name);
 
Указано:
withName в интерфейсе MemoryLayout
Параметры:
name - имя макета.
Возвращает:
новый макет, который такой же, как этот макет, за исключением имени, связанного с ним.
См. также:
  • 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
Возвращает:
имя макета (если есть).
См. также:
  • MemoryLayout.withName(String)

attribute

public Optional<Constable> attribute(String name)
Описание скопировано из интерфейса: MemoryLayout
Возвращает атрибут с заданным именем (если он существует).
Указано:
attribute в интерфейсе MemoryLayout
Параметры:
name - имя атрибута
Возвращает:
атрибут с заданным именем (если он существует).

attributes

public Stream<String> attributes()
Описание скопировано из интерфейса: MemoryLayout
Возвращает поток имен атрибутов, связанных с этим макетом.
Указано:
attributes в интерфейсе MemoryLayout
Возвращает:
поток имен атрибутов, связанных с этим макетом.

bitAlignment

public final long bitAlignment()
Описание, скопированное из интерфейса: MemoryLayout
Возвращает ограничение выравнивания, связанное с этим макетом, выраженное в битах. Выравнивание макета определяет степень двойки A , которая является выравниванием макета в битах. Если 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()
Описание, скопированное из интерфейса: MemoryLayout
У макета указан размер? У макета нет указанного размера, если это (или он содержит) макет последовательности, размер которой не определён (см. SequenceLayout.elementCount()). Макеты значений (см. ValueLayout) и макеты заполнения (см. MemoryLayout.paddingLayout(long)) всегда имеют указанный размер, поэтому в этих случаях этот метод всегда возвращает true.
Указано в:
hasSize в интерфейсе MemoryLayout
Возвращает:
true, если у этого макета указан размер.

bitSize

public long bitSize()
Описание, скопированное из интерфейса: MemoryLayout
Вычисляет размер макета в битах.
Указано в:
bitSize в интерфейсе MemoryLayout
Возвращает:
размер макета в битах.

isPadding

public boolean isPadding()
Описание, скопированное из интерфейса: MemoryLayout
Является ли это макетом заполнения (например, макетом, созданным из MemoryLayout.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

Spec-Zone.ru

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