Module java.base
Package java.lang.foreign

# Interface GroupLayout

All Superinterfaces:
  `MemoryLayoutPREVIEW`

All Known Subinterfaces:
  `StructLayoutPREVIEW`, `UnionLayoutPREVIEW`

public sealed interface GroupLayout extends MemoryLayoutPREVIEW permits StructLayoutPREVIEW, UnionLayoutPREVIEW
`GroupLayout` is a preview API of the Java platform.
Programs can only use `GroupLayout` when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
A compound layout that aggregates multiple member layouts. There are two ways in which member layouts can be combined: if member layouts are laid out one after the other, the resulting group layout is said to be a struct layout (see `MemoryLayout.structLayout(MemoryLayout...)`PREVIEW); conversely, if all member layouts are laid out at the same starting offset, the resulting group layout is said to be a union layout (see `MemoryLayout.unionLayout(MemoryLayout...)`PREVIEW).

Implementation Requirements:
  This class is immutable, thread-safe and value-based.
Since:
  19

- ## Nested Class Summary

  ## Nested classes/interfaces declared in interface java.lang.foreign.MemoryLayoutPREVIEW

  `MemoryLayout.PathElementPREVIEW`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<MemoryLayoutPREVIEW>`
  `memberLayouts()`
  Returns the member layouts associated with this group.
  `GroupLayoutPREVIEW`
  `withBitAlignment(long bitAlignment)`
  Returns a memory layout of the same type with the same size and name as this layout, but with the specified alignment constraint (in bits).
  `GroupLayoutPREVIEW`
  `withName(String name)`
  Returns a memory layout of the same type with the same size and alignment constraint as this layout, but with the specified name.

  ### Methods declared in interface java.lang.foreign.MemoryLayoutPREVIEW

  `bitAlignment, bitOffset, bitOffsetHandle, bitSize, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, select, sliceHandle, toString, varHandle`

- ## Method Details

  - ### memberLayouts

    List<MemoryLayoutPREVIEW> memberLayouts()
    Returns the member layouts associated with this group.
    API Note:
      the order in which member layouts are returned is the same order in which member layouts have been passed to one of the group layout factory methods (see `MemoryLayout.structLayout(MemoryLayout...)`PREVIEW, `MemoryLayout.unionLayout(MemoryLayout...)`PREVIEW).
    Returns:
      the member layouts associated with this group.

  - ### withName

    GroupLayoutPREVIEW withName(String name)
    Returns a memory layout of the same type with the same size and alignment constraint as this layout, but with the specified name.
    Specified by:
      `withName` in interface `MemoryLayoutPREVIEW`
    Parameters:
      `name` - the layout name.
    Returns:
      a memory layout with the given name.
    See Also:
      - `MemoryLayout.name()`PREVIEW

  - ### withBitAlignment

    GroupLayoutPREVIEW withBitAlignment(long bitAlignment)
    Returns a memory layout of the same type with the same size and name as this layout, but with the specified alignment constraint (in bits).
    Specified by:
      `withBitAlignment` in interface `MemoryLayoutPREVIEW`
    Parameters:
      `bitAlignment` - the layout alignment constraint, expressed in bits.
    Returns:
      a memory layout with the given alignment constraint.