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.