- すべてのスーパー・インタフェース:
- MemoryLayout
- 既知のすべてのサブインタフェース:
- AddressLayout,- ValueLayout.OfBoolean,- ValueLayout.OfByte,- ValueLayout.OfChar,- ValueLayout.OfDouble,- ValueLayout.OfFloat,- ValueLayout.OfInt,- ValueLayout.OfLong,- ValueLayout.OfShort
public sealed interface ValueLayout extends MemoryLayout permits ValueLayout.OfBoolean, ValueLayout.OfByte, ValueLayout.OfChar, ValueLayout.OfShort, ValueLayout.OfInt, ValueLayout.OfFloat, ValueLayout.OfLong, ValueLayout.OfDouble, AddressLayout
基本データ型の値をモデル化するレイアウト。 値レイアウトによってモデル化される値の例には、「整数」値(署名済または未署名)、floating-point値およびaddress値があります。 
 
各値レイアウトには、サイズ、整列(両方ともバイトで表します)、「バイト・オーダー」および「キャリア」があります。つまり、値レイアウトを使用してメモリーのリージョンを「アクセス」するときに使用するJavaタイプです。
このクラスは、Javaプリミティブ型およびアドレスの有用な値レイアウト定数を定義します。
- APIのノート:
- Javaレイアウト定数のいくつかの特性は、プラットフォームに依存します。 たとえば、これらの定数のバイト順序は「ネイティブ・バイト順序」に設定されているため、配列やByteBufferなどの他のAPIを簡単に操作できます。 さらに、64ビット・プラットフォームではJAVA_LONGとJAVA_DOUBLEの境界整列制約が8バイトに設定されていますが、32ビット・プラットフォームでは4バイトのみに設定されています。
- 実装要件:
- クラスおよびサブクラスの実装は、不変、スレッド・セーフおよびvalue-basedです。
- シール済クラス階層グラフ:
- 導入されたバージョン:
- 22
- 
ネストされたクラスのサマリーネストされたクラス修飾子と型インタフェース説明static interfaceキャリアがboolean.classの値レイアウト。static interfaceキャリアがbyte.classの値レイアウト。static interfaceキャリアがchar.classの値レイアウト。static interfaceキャリアがdouble.classの値レイアウト。static interfaceキャリアがfloat.classの値レイアウト。static interfaceキャリアがint.classの値レイアウト。static interfaceキャリアがlong.classの値レイアウト。static interfaceキャリアがshort.classの値レイアウト。インタフェースjava.lang.foreign.MemoryLayoutで宣言されたネストされたクラス/インタフェースMemoryLayout.PathElement
- 
フィールドのサマリーフィールド修飾子と型フィールド説明static final AddressLayoutsizeof(size_t)に設定されたマシン・アドレス (size_t)のバイト整列と同じサイズを持つアドレス配列定数。ByteOrder.nativeOrder()に設定されたバイト順序。static final AddressLayoutサイズがマシン・アドレス (size_t)のものと同じで、バイト順序がByteOrder.nativeOrder()に設定されている、整列されていないアドレス・レイアウト定数。static final ValueLayout.OfBooleanサイズがJavaboolean、1に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。static final ValueLayout.OfByteサイズがJavabyte、1に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。static final ValueLayout.OfCharサイズがJavachar、2に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。static final ValueLayout.OfCharサイズがJavaのcharと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。static final ValueLayout.OfDoubleサイズがJavadouble、(platform-dependent)バイトの整列がADDRESS.byteSize()、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。static final ValueLayout.OfDoubleサイズがJavaのdoubleと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。static final ValueLayout.OfFloatサイズがJavafloat、4に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。static final ValueLayout.OfFloatサイズがJavaのfloatと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。static final ValueLayout.OfIntサイズがJavaint、4に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。static final ValueLayout.OfIntサイズがJavaのintと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。static final ValueLayout.OfLongサイズがJavalong、(platform-dependent)バイトの整列がADDRESS.byteSize()、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。static final ValueLayout.OfLongサイズがJavaのlongと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。static final ValueLayout.OfShortサイズがJavashort、2に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。static final ValueLayout.OfShortサイズがJavaのshortと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。
- 
メソッドのサマリー修飾子と型メソッド説明Class<?> carrier()この値レイアウトに関連付けられたキャリアを返します。order()値のバイト順を返します。指定されたメモリー・セグメントで、この値レイアウトによって記述された値にアクセスするために使用できるvarハンドルを返します。withByteAlignment(long byteAlignment) このレイアウトと同じ特性を持つメモリー・レイアウトを返しますが、指定された整列制約(バイト単位)を使用します。このレイアウトと同じ特性を持つメモリー・レイアウトを、指定された名前で返します。このレイアウトと同じ特性を持つ値レイアウトを、指定されたバイト順序で返します。このレイアウトと同じ特性を持つメモリー・レイアウトを名前なしで返します。インタフェースjava.lang.foreign.MemoryLayoutで宣言されたメソッドarrayElementVarHandle, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, scale, scaleHandle, select, sliceHandle, toString, varHandle
- 
フィールド詳細- 
ADDRESSstatic final AddressLayout ADDRESSsizeof(size_t)に設定されたマシン・アドレス (size_t)のバイト整列と同じサイズを持つアドレス配列定数。ByteOrder.nativeOrder()に設定されたバイト順序。
- 
JAVA_BYTEstatic final ValueLayout.OfByte JAVA_BYTEサイズがJavabyte、1に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
- 
JAVA_BOOLEANstatic final ValueLayout.OfBoolean JAVA_BOOLEANサイズがJavaboolean、1に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
- 
JAVA_CHARstatic final ValueLayout.OfChar JAVA_CHARサイズがJavachar、2に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
- 
JAVA_SHORTstatic final ValueLayout.OfShort JAVA_SHORTサイズがJavashort、2に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
- 
JAVA_INTstatic final ValueLayout.OfInt JAVA_INTサイズがJavaint、4に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
- 
JAVA_LONGstatic final ValueLayout.OfLong JAVA_LONGサイズがJavalong、(platform-dependent)バイトの整列がADDRESS.byteSize()、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。
- 
JAVA_FLOATstatic final ValueLayout.OfFloat JAVA_FLOATサイズがJavafloat、4に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
- 
JAVA_DOUBLEstatic final ValueLayout.OfDouble JAVA_DOUBLEサイズがJavadouble、(platform-dependent)バイトの整列がADDRESS.byteSize()、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。
- 
ADDRESS_UNALIGNEDstatic final AddressLayout ADDRESS_UNALIGNEDサイズがマシン・アドレス (size_t)のものと同じで、バイト順序がByteOrder.nativeOrder()に設定されている、整列されていないアドレス・レイアウト定数。 次のコードと同等です:ADDRESS.withByteAlignment(1);- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
 
- 
JAVA_CHAR_UNALIGNEDstatic final ValueLayout.OfChar JAVA_CHAR_UNALIGNEDサイズがJavaのcharと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_CHAR.withByteAlignment(1);- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
 
- 
JAVA_SHORT_UNALIGNEDstatic final ValueLayout.OfShort JAVA_SHORT_UNALIGNEDサイズがJavaのshortと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_SHORT.withByteAlignment(1);- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
 
- 
JAVA_INT_UNALIGNEDstatic final ValueLayout.OfInt JAVA_INT_UNALIGNEDサイズがJavaのintと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_INT.withByteAlignment(1);- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
 
- 
JAVA_LONG_UNALIGNEDstatic final ValueLayout.OfLong JAVA_LONG_UNALIGNEDサイズがJavaのlongと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_LONG.withByteAlignment(1);- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
 
- 
JAVA_FLOAT_UNALIGNEDstatic final ValueLayout.OfFloat JAVA_FLOAT_UNALIGNEDサイズがJavaのfloatと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_FLOAT.withByteAlignment(1);- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
 
- 
JAVA_DOUBLE_UNALIGNEDstatic final ValueLayout.OfDouble JAVA_DOUBLE_UNALIGNEDサイズがJavaのdoubleと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_DOUBLE.withByteAlignment(1);- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
 
 
- 
- 
メソッドの詳細- 
order
- 
withOrderValueLayout withOrder(ByteOrder order) このレイアウトと同じ特性を持つ値レイアウトを、指定されたバイト順序で返します。- パラメータ:
- order- 必要なバイト順序
- 戻り値:
- このレイアウトと同じ特性を持つが、指定されたバイト順序を持つ値レイアウト
 
- 
withoutNameValueLayout withoutName()このレイアウトと同じ特性を持つメモリー・レイアウトを名前なしで返します。- 定義:
- インタフェースMemoryLayout内のwithoutName
- 戻り値:
- このレイアウトと同じ特性を持つが名前のないメモリー・レイアウト
- 関連項目:
 
- 
carrier
- 
withNameValueLayout withName(String name) このレイアウトと同じ特性を持つメモリー・レイアウトを、指定された名前で返します。- 定義:
- インタフェースMemoryLayout内のwithName
- パラメータ:
- name- レイアウト名
- 戻り値:
- このレイアウトと同じ特性を持つが、指定された名前を持つメモリー・レイアウト
- 関連項目:
 
- 
withByteAlignmentValueLayout withByteAlignment(long byteAlignment) このレイアウトと同じ特性を持つメモリー・レイアウトを返しますが、指定された整列制約(バイト単位)を使用します。- 定義:
- インタフェースMemoryLayout内のwithByteAlignment
- パラメータ:
- byteAlignment- レイアウト整列制約(バイト単位)
- 戻り値:
- このレイアウトと同じ特性を持つメモリー・レイアウト。ただし、指定された整列制約(バイト単位)
- 例外:
- IllegalArgumentException-- byteAlignmentが2の累乗でない場合
 
- 
varHandleVarHandle varHandle()指定されたメモリー・セグメントで、この値レイアウトによって記述された値にアクセスするために使用できるvarハンドルを返します。戻されるvarハンドルの「var型」は、この値レイアウトの「キャリア・タイプ」で、座標タイプのリストは (MemorySegment, long)で、メモリー・セグメント座標はアクセスされるメモリー・セグメントに対応し、long座標はアクセスが発生するアクセスされるメモリー・セグメントへのバイト・オフセットに対応します。返されるvarハンドルは、この値レイアウトの「線形拘束」に従ってアクセスが整列されていることをチェックします。 - APIのノート:
- このメソッドは似ていますが、空のパス要素配列を使用してMemoryLayout#varHandle(PathElement...)をコールするよりも効率的です。これは、var args配列の作成を回避するためです。返されるvarハンドルは、メモリー・レイアウトから導出されたすべてのメモリー・アクセスvarハンドルに共通する特定の「アクセス・モード制限」を備えています。
- 戻り値:
- 特定のメモリー・セグメントで、この値レイアウトで記述された値にアクセスするために使用できるvarハンドル
- 関連項目:
 
 
-