Union Layout
UnionLayout represents a C union. Much like a C union, it is used to specify and
access the different members like it was a struct. However, only one of
those members exists at any one time. You can create a UnionLayout with
MemoryLayout.unionLayout(MemoryLayout…). Just like in C, a
MemorySegment referencing a UnionLayout can be treated as actually referencing the
layout of one of its members, such as by calling .get() with the associated
MemoryLayout.
Alternatively, Variable Handles can be used to
reference members
in a process similar to that used in C.
Generally, union layouts will have a size equal to the maximum size of its
members and an alignment equal to the maximum alignment of its
members. Similarly to structs, unions can be overaligned, which can be
specified by adding .withAlignment(alignment) to the end of the method
chain to overwrite Java’s automatically-determined alignment for that type.
For more information on UnionLayout, visit Oracle's official documentation.