Package Summary Overview Summary

Package Summary Overview Summary

Module java.base
Package java.lang.foreign

# Interface UnionLayout

All Superinterfaces:
  `GroupLayout`, `MemoryLayout`

public sealed interface UnionLayout extends GroupLayout
A group layout whose member layouts are laid out at the same starting offset.

Since:
  22
Implementation Requirements:
  Implementing classes are immutable, thread-safe and value-based.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface java.lang.foreign.MemoryLayout

  `MemoryLayout.PathElement`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `UnionLayout`
  `withByteAlignment (long byteAlignment)`
  Returns a memory layout with the same characteristics as this layout, but with the given alignment constraint (in bytes).
  `UnionLayout`
  `withName (String name)`
  Returns a memory layout with the same characteristics as this layout, but with the given name.
  `UnionLayout`
  `withoutName()`
  Returns a memory layout with the same characteristics as this layout, but with no name.

  ### Methods inherited from interface java.lang.foreign.GroupLayout

  `memberLayouts`

  ### Methods inherited from interface java.lang.foreign.MemoryLayout

  `byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, scale, scaleHandle, select, sliceHandle, toString, varHandle`

- ## Method Details

  - ### withName

    UnionLayout withName (String name)
    Returns a memory layout with the same characteristics as this layout, but with the given name.
    Specified by:
      `withName` in interface `GroupLayout`
    Specified by:
      `withName` in interface `MemoryLayout`
    Parameters:
      `name` - the layout name.
    Returns:
      a memory layout with the same characteristics as this layout, but with the given name
    See Also:
      - `MemoryLayout.name()`

  - ### withoutName

    UnionLayout withoutName()
    Returns a memory layout with the same characteristics as this layout, but with no name.
    Specified by:
      `withoutName` in interface `GroupLayout`
    Specified by:
      `withoutName` in interface `MemoryLayout`
    Returns:
      a memory layout with the same characteristics as this layout, but with no name
    See Also:
      - `MemoryLayout.name()`

  - ### withByteAlignment

    UnionLayout withByteAlignment (long byteAlignment)
    Returns a memory layout with the same characteristics as this layout, but with the given alignment constraint (in bytes).
    Specified by:
      `withByteAlignment` in interface `GroupLayout`
    Specified by:
      `withByteAlignment` in interface `MemoryLayout`
    Parameters:
      `byteAlignment` - the layout alignment constraint, expressed in bytes.
    Returns:
      a memory layout with the same characteristics as this layout, but with the given alignment constraint (in bytes)
    Throws:
      `IllegalArgumentException` - if `byteAlignment` is not a power of two.
      `IllegalArgumentException` - if `byteAlignment` is less than `M`, where `M` is the maximum alignment constraint in any of the member layouts associated with this group layout.