UnionLayout — 멤버들이 같은 시작 오프셋에 배치되는 그룹 레이아웃
UnionLayout — 멤버들이 같은 시작 오프셋에 배치되는 그룹 레이아웃
UnionLayout은 멤버 레이아웃들이 모두 같은 시작 오프셋에 배치되는 그룹 레이아웃(group layout)이에요. C의 union과 비슷한 개념으로, 하나의 메모리 영역을 여러 타입으로 겹쳐 해석하고 싶을 때 써요.
본문
이 인터페이스는 java.lang.foreign 패키지의 일부로, preview API예요. 즉 preview 기능을 활성화해야 쓸 수 있고, 향후 릴리스에서 제거되거나 영구 기능으로 승격될 수 있어요.
구현 요구 사항으로, 구현 클래스는 불변(immutable)·스레드 안전·값 기반(value-based) 이에요.
상속 구조는 다음과 같아요.
java.lang.foreign.GroupLayout
java.lang.foreign.UnionLayout
GroupLayout의 하위 인터페이스이며, sealed 인터페이스예요.
메서드
UnionLayout withName(String name)— 이 레이아웃과 같은 특성을 갖되 이름이 주어진 레이아웃을 반환해요.UnionLayout withoutName()— 이 레이아웃과 같은 특성을 갖되 이름이 없는 레이아웃을 반환해요.UnionLayout withByteAlignment(long byteAlignment)— 이 레이아웃과 같은 특성을 갖되 주어진 정렬 제약(단위: 바이트)을 갖는 레이아웃을 반환해요.
그 외에 부모 인터페이스(GroupLayout, MemoryLayout)에서 선언된 memberLayouts, byteAlignment, byteOffset, byteSize, select, varHandle 등을 상속받아요.