ValueLayout — 기본 데이터 타입의 값을 모델링하는 레이아웃

ValueLayout — 기본 데이터 타입의 값을 모델링하는 레이아웃

ValueLayout기본 데이터 타입(basic data types)의 값을 모델링하는 레이아웃이에요. java.lang.foreign 패키지에서 메모리 레이아웃을 표현할 때, 정수(부호 있거나 없는)·부동소수점·주소 값 같은 것들이 이 레이아웃으로 표현돼요.

출처: Java API Reference

본문

이 인터페이스는 preview API예요. 즉 preview 기능을 활성화해야 쓸 수 있고, 향후 릴리스에서 제거되거나 영구 기능으로 승격될 수 있어요.

각 값 레이아웃은 크기(size)·정렬(alignment) (둘 다 바이트 단위), 바이트 순서(byte order), 그리고 carrier — 즉 그 값 레이아웃으로 메모리 영역에 접근할 때 사용해야 하는 자바 타입 — 을 가져요. 이 클래스는 자바 원시 타입과 주소를 위한 유용한 값 레이아웃 상수들을 정의해요.

API 노트: 자바 레이아웃 상수의 일부 특성은 플랫폼 의존적이에요. 예를 들어 이 상수들의 바이트 순서는 네이티브 바이트 순서로 설정돼 있어서 ByteBuffer 같은 다른 API와 다루기 쉬워요. 또 JAVA_LONGJAVA_DOUBLE의 정렬 제약은 64비트 플랫폼에서는 8바이트지만, 32비트 플랫폼에서는 4바이트예요.

구현 요구 사항으로, 구현 클래스와 하위 클래스는 불변·스레드 안전·값 기반이에요.

중첩 인터페이스

  • ValueLayout.OfBoolean — carrier가 boolean.class인 값 레이아웃 (preview).
  • ValueLayout.OfByte — carrier가 byte.class인 값 레이아웃 (preview).
  • ValueLayout.OfChar — carrier가 char.class인 값 레이아웃 (preview).
  • ValueLayout.OfDouble — carrier가 double.class인 값 레이아웃 (preview).
  • ValueLayout.OfFloat — carrier가 float.class인 값 레이아웃 (preview).
  • ValueLayout.OfInt — carrier가 int.class인 값 레이아웃 (preview).
  • ValueLayout.OfLong — carrier가 long.class인 값 레이아웃 (preview).
  • ValueLayout.OfShort — carrier가 short.class인 값 레이아웃 (preview).
  • AddressLayout — 주소 값을 모델링하는 레이아웃 (preview).

ValueLayout은 sealed 인터페이스로, 위 중첩 타입들만 허용해요.

더 알아보기 (Learn more)