- すべてのスーパー・インタフェース:
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 AddressLayout
sizeof(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
-
フィールド詳細
-
ADDRESS
static final AddressLayout ADDRESSsizeof(size_t)
に設定されたマシン・アドレス (size_t
)のバイト整列と同じサイズを持つアドレス配列定数。ByteOrder.nativeOrder()
に設定されたバイト順序。 -
JAVA_BYTE
static final ValueLayout.OfByte JAVA_BYTEサイズがJavabyte
、1に設定されたバイト整列、およびByteOrder.nativeOrder()
に設定されたバイト順序と同じ値レイアウト定数。 -
JAVA_BOOLEAN
static final ValueLayout.OfBoolean JAVA_BOOLEANサイズがJavaboolean
、1に設定されたバイト整列、およびByteOrder.nativeOrder()
に設定されたバイト順序と同じ値レイアウト定数。 -
JAVA_CHAR
static final ValueLayout.OfChar JAVA_CHARサイズがJavachar
、2に設定されたバイト整列、およびByteOrder.nativeOrder()
に設定されたバイト順序と同じ値レイアウト定数。 -
JAVA_SHORT
static final ValueLayout.OfShort JAVA_SHORTサイズがJavashort
、2に設定されたバイト整列、およびByteOrder.nativeOrder()
に設定されたバイト順序と同じ値レイアウト定数。 -
JAVA_INT
static final ValueLayout.OfInt JAVA_INTサイズがJavaint
、4に設定されたバイト整列、およびByteOrder.nativeOrder()
に設定されたバイト順序と同じ値レイアウト定数。 -
JAVA_LONG
static final ValueLayout.OfLong JAVA_LONGサイズがJavalong
、(platform-dependent)バイトの整列がADDRESS.byteSize()
、バイト順序がByteOrder.nativeOrder()
に設定されている値レイアウト定数。 -
JAVA_FLOAT
static final ValueLayout.OfFloat JAVA_FLOATサイズがJavafloat
、4に設定されたバイト整列、およびByteOrder.nativeOrder()
に設定されたバイト順序と同じ値レイアウト定数。 -
JAVA_DOUBLE
static final ValueLayout.OfDouble JAVA_DOUBLEサイズがJavadouble
、(platform-dependent)バイトの整列がADDRESS.byteSize()
、バイト順序がByteOrder.nativeOrder()
に設定されている値レイアウト定数。 -
ADDRESS_UNALIGNED
static final AddressLayout ADDRESS_UNALIGNEDサイズがマシン・アドレス (size_t
)のものと同じで、バイト順序がByteOrder.nativeOrder()
に設定されている、整列されていないアドレス・レイアウト定数。 次のコードと同等です:ADDRESS.withByteAlignment(1);
- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
-
JAVA_CHAR_UNALIGNED
static final ValueLayout.OfChar JAVA_CHAR_UNALIGNEDサイズがJavaのchar
と同じで、バイト順序がByteOrder.nativeOrder()
に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_CHAR.withByteAlignment(1);
- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
-
JAVA_SHORT_UNALIGNED
static final ValueLayout.OfShort JAVA_SHORT_UNALIGNEDサイズがJavaのshort
と同じで、バイト順序がByteOrder.nativeOrder()
に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_SHORT.withByteAlignment(1);
- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
-
JAVA_INT_UNALIGNED
static final ValueLayout.OfInt JAVA_INT_UNALIGNEDサイズがJavaのint
と同じで、バイト順序がByteOrder.nativeOrder()
に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_INT.withByteAlignment(1);
- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
-
JAVA_LONG_UNALIGNED
static final ValueLayout.OfLong JAVA_LONG_UNALIGNEDサイズがJavaのlong
と同じで、バイト順序がByteOrder.nativeOrder()
に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_LONG.withByteAlignment(1);
- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
-
JAVA_FLOAT_UNALIGNED
static final ValueLayout.OfFloat JAVA_FLOAT_UNALIGNEDサイズがJavaのfloat
と同じで、バイト順序がByteOrder.nativeOrder()
に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_FLOAT.withByteAlignment(1);
- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
-
JAVA_DOUBLE_UNALIGNED
static final ValueLayout.OfDouble JAVA_DOUBLE_UNALIGNEDサイズがJavaのdouble
と同じで、バイト順序がByteOrder.nativeOrder()
に設定されている整列されていない値レイアウト定数。 次のコードと同等です:JAVA_DOUBLE.withByteAlignment(1);
- APIのノート:
- 調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
-
-
メソッドの詳細
-
order
-
withOrder
ValueLayout withOrder(ByteOrder order) このレイアウトと同じ特性を持つ値レイアウトを、指定されたバイト順序で返します。- パラメータ:
order
- 必要なバイト順序- 戻り値:
- このレイアウトと同じ特性を持つが、指定されたバイト順序を持つ値レイアウト
-
withoutName
ValueLayout withoutName()このレイアウトと同じ特性を持つメモリー・レイアウトを名前なしで返します。- 定義:
- インタフェース
MemoryLayout
内のwithoutName
- 戻り値:
- このレイアウトと同じ特性を持つが名前のないメモリー・レイアウト
- 関連項目:
-
carrier
-
withName
ValueLayout withName(String name) このレイアウトと同じ特性を持つメモリー・レイアウトを、指定された名前で返します。- 定義:
- インタフェース
MemoryLayout
内のwithName
- パラメータ:
name
- レイアウト名- 戻り値:
- このレイアウトと同じ特性を持つが、指定された名前を持つメモリー・レイアウト
- 関連項目:
-
withByteAlignment
ValueLayout withByteAlignment(long byteAlignment) このレイアウトと同じ特性を持つメモリー・レイアウトを返しますが、指定された整列制約(バイト単位)を使用します。- 定義:
- インタフェース
MemoryLayout
内のwithByteAlignment
- パラメータ:
byteAlignment
- レイアウト整列制約(バイト単位)- 戻り値:
- このレイアウトと同じ特性を持つメモリー・レイアウト。ただし、指定された整列制約(バイト単位)
- 例外:
IllegalArgumentException
-byteAlignment
が2の累乗でない場合
-
varHandle
VarHandle varHandle()指定されたメモリー・セグメントで、この値レイアウトによって記述された値にアクセスするために使用できるvarハンドルを返します。戻されるvarハンドルの「var型」は、この値レイアウトの「キャリア・タイプ」で、座標タイプのリストは
(MemorySegment, long)
で、メモリー・セグメント座標はアクセスされるメモリー・セグメントに対応し、long
座標はアクセスが発生するアクセスされるメモリー・セグメントへのバイト・オフセットに対応します。返されるvarハンドルは、この値レイアウトの「線形拘束」に従ってアクセスが整列されていることをチェックします。
- APIのノート:
- このメソッドは似ていますが、空のパス要素配列を使用して
MemoryLayout#varHandle(PathElement...)
をコールするよりも効率的です。これは、var args配列の作成を回避するためです。返されるvarハンドルは、メモリー・レイアウトから導出されたすべてのメモリー・アクセスvarハンドルに共通する特定の「アクセス・モード制限」を備えています。 - 戻り値:
- 特定のメモリー・セグメントで、この値レイアウトで記述された値にアクセスするために使用できるvarハンドル
- 関連項目:
-