java.lang.Object
java.lang.foreign.ValueLayout
- すべての実装されたインタフェース:
- MemoryLayoutPREVIEW
- 直系の既知のサブクラス:
- ValueLayout.OfAddressPREVIEW,- ValueLayout.OfBooleanPREVIEW,- ValueLayout.OfBytePREVIEW,- ValueLayout.OfCharPREVIEW,- ValueLayout.OfDoublePREVIEW,- ValueLayout.OfFloatPREVIEW,- ValueLayout.OfIntPREVIEW,- ValueLayout.OfLongPREVIEW,- ValueLayout.OfShortPREVIEW
public sealed class ValueLayout extends Object implements MemoryLayoutPREVIEW permits ValueLayout.OfBytePREVIEW, ValueLayout.OfShortPREVIEW, ValueLayout.OfCharPREVIEW, ValueLayout.OfIntPREVIEW, ValueLayout.OfFloatPREVIEW, ValueLayout.OfLongPREVIEW, ValueLayout.OfDoublePREVIEW, ValueLayout.OfBooleanPREVIEW, ValueLayout.OfAddressPREVIEW
ValueLayoutは、JavaプラットフォームのプレビューAPIです。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
値レイアウト。 値レイアウトは、「整数」タイプの(署名済または未署名)やfloating-pointタイプなど、基本データ型の値に関連付けられたメモリー・レイアウトをモデル化するために使用します。 各値レイアウトには、サイズ、整列(ビット単位)、byte orderおよびcarrierがあります。つまり、値レイアウトを使用してメモリー・リージョンをaccessingPREVIEWするときに使用するJavaタイプです。 
 
 このクラスは、Javaプリミティブ型およびアドレスの有用な値レイアウト定数を定義します。 このクラスのレイアウト定数は、暗黙的な整列とバイト順序の想定を行います: このクラスのすべてのレイアウト定数はバイト揃えで、バイト順序は「プラットフォームのデフォルト」に設定されるため、配列やByteBufferなどの他のAPIを簡単に操作できます。 
- 実装要件:
- このクラスとそのサブクラスは不変でスレッド・セーフであり、value-basedです。
- 導入されたバージョン:
- 19
- 
ネストされたクラスのサマリーネストされたクラス修飾子と型クラス説明static final classPreview.キャリアがMemoryAddress.classの値レイアウト。static final classPreview.キャリアがboolean.classの値レイアウト。static final classPreview.キャリアがbyte.classの値レイアウト。static final classPreview.キャリアがchar.classの値レイアウト。static final classPreview.キャリアがdouble.classの値レイアウト。static final classPreview.キャリアがfloat.classの値レイアウト。static final classPreview.キャリアがint.classの値レイアウト。static final classPreview.キャリアがlong.classの値レイアウト。static final classPreview.キャリアがshort.classの値レイアウト。インタフェースjava.lang.foreign.MemoryLayoutPREVIEWで宣言されたネストされたクラス/インタフェースMemoryLayout.PathElementPREVIEW
- 
フィールドのサマリーフィールド修飾子と型フィールド説明static final ValueLayout.OfAddressPREVIEWマシン・アドレス(size_t)と同じサイズ、ビット位置合わせをsizeof(size_t) * 8に設定し、バイト順序をByteOrder.nativeOrder()に設定した値レイアウト定数。static final ValueLayout.OfBooleanPREVIEWJavabooleanと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfBytePREVIEWJavabyteと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfCharPREVIEWサイズがJavachar、ビット位置合わせが16、バイト順序がByteOrder.nativeOrder()に設定された値レイアウト定数。static final ValueLayout.OfDoublePREVIEWJavadoubleと同じサイズ、64に設定されたビット整列、ByteOrder.nativeOrder()に設定されたバイト順序を持つ値レイアウト定数。static final ValueLayout.OfFloatPREVIEWサイズがJavafloat、ビット位置合わせが32、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。static final ValueLayout.OfIntPREVIEWサイズがJavaint、ビット位置合わせが32、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。static final ValueLayout.OfLongPREVIEWJavalongと同じサイズ、64に設定されたビット整列、ByteOrder.nativeOrder()に設定されたバイト順序を持つ値レイアウト定数。static final ValueLayout.OfShortPREVIEWサイズがJavashort、ビット位置合わせが16、バイト順序がByteOrder.nativeOrder()に設定された値レイアウト定数。
- 
メソッドのサマリー修飾子と型メソッド説明arrayElementVarHandle(int... shape) マルチディメンション配列の間接参照に使用できる「アカド」アクセス変数ハンドルを作成します。final longこのレイアウトに関連付けられている配置制約をビット単位で返します。longbitSize()レイアウト・サイズをビット単位で返します。longbyteSize()レイアウト・サイズをバイト単位で返します。Class<?>carrier()この値レイアウトに関連付けられたキャリアを返します。boolean指定されたオブジェクトをこのレイアウトと比較し、等価性を維持します。inthashCode()このレイアウトのハッシュ・コード値を返します。booleanこのレイアウトがパディング・レイアウトの場合、trueを返します。name()このレイアウトに関連付けられている名前(もしあれば)を返します。order()値のバイト順を返します。toString()このレイアウトの文字列表現を返します。withBitAlignment(long alignmentBits) このレイアウトと同じサイズおよび名前のメモリー・レイアウトを返しますが、指定された整列制約(ビット単位)を使用します。サイズと位置合わせの制約がこのレイアウトと同じですが、指定された名前でメモリー・レイアウトを返します。この値レイアウトと同じキャリア、整列制約および名前を持つ値レイアウトを返しますが、指定されたバイト順で返されます。インタフェースjava.lang.foreign.MemoryLayoutPREVIEWで宣言されたメソッドbitAlignment, bitOffset, bitOffsetHandle, bitSize, byteAlignment, byteOffset, byteOffsetHandle, byteSize, isPadding, name, select, sliceHandle, varHandle
- 
フィールド詳細- 
ADDRESSpublic static final ValueLayout.OfAddressPREVIEW ADDRESSマシン・アドレス(size_t)と同じサイズ、ビット位置合わせをsizeof(size_t) * 8に設定し、バイト順序をByteOrder.nativeOrder()に設定した値レイアウト定数。 次のコードと同等です:MemoryLayout.valueLayout(MemoryAddress.class, ByteOrder.nativeOrder()) .withBitAlignment(<address size>);
- 
JAVA_BYTEpublic static final ValueLayout.OfBytePREVIEW JAVA_BYTEJavabyteと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(byte.class, ByteOrder.nativeOrder()).withBitAlignment(8);
- 
JAVA_BOOLEANpublic static final ValueLayout.OfBooleanPREVIEW JAVA_BOOLEANJavabooleanと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(boolean.class, ByteOrder.nativeOrder()).withBitAlignment(8);
- 
JAVA_CHARpublic static final ValueLayout.OfCharPREVIEW JAVA_CHARサイズがJavachar、ビット位置合わせが16、バイト順序がByteOrder.nativeOrder()に設定された値レイアウト定数。 次のコードと同等です:MemoryLayout.valueLayout(char.class, ByteOrder.nativeOrder()).withBitAlignment(16);
- 
JAVA_SHORTpublic static final ValueLayout.OfShortPREVIEW JAVA_SHORTサイズがJavashort、ビット位置合わせが16、バイト順序がByteOrder.nativeOrder()に設定された値レイアウト定数。 次のコードと同等です:MemoryLayout.valueLayout(short.class, ByteOrder.nativeOrder()).withBitAlignment(16);
- 
JAVA_INTpublic static final ValueLayout.OfIntPREVIEW JAVA_INTサイズがJavaint、ビット位置合わせが32、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。 次のコードと同等です:MemoryLayout.valueLayout(int.class, ByteOrder.nativeOrder()).withBitAlignment(32);
- 
JAVA_LONGpublic static final ValueLayout.OfLongPREVIEW JAVA_LONGJavalongと同じサイズ、64に設定されたビット整列、ByteOrder.nativeOrder()に設定されたバイト順序を持つ値レイアウト定数。 次のコードと同等です:MemoryLayout.valueLayout(long.class, ByteOrder.nativeOrder()).withBitAlignment(64);
- 
JAVA_FLOATpublic static final ValueLayout.OfFloatPREVIEW JAVA_FLOATサイズがJavafloat、ビット位置合わせが32、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。 次のコードと同等です:MemoryLayout.valueLayout(float.class, ByteOrder.nativeOrder()).withBitAlignment(32);
- 
JAVA_DOUBLEpublic static final ValueLayout.OfDoublePREVIEW JAVA_DOUBLEJavadoubleと同じサイズ、64に設定されたビット整列、ByteOrder.nativeOrder()に設定されたバイト順序を持つ値レイアウト定数。 次のコードと同等です:MemoryLayout.valueLayout(double.class, ByteOrder.nativeOrder()).withBitAlignment(64);
 
- 
- 
メソッドの詳細- 
orderpublic ByteOrder order()値のバイト順を返します。- 戻り値:
- 値のバイト順
 
- 
withOrderpublic ValueLayoutPREVIEW withOrder(ByteOrder order) この値レイアウトと同じキャリア、整列制約および名前を持つ値レイアウトを返しますが、指定されたバイト順で返されます。- パラメータ:
- order- 必要なバイト順。
- 戻り値:
- 指定されたバイト順の値レイアウト。
 
- 
toStringpublic String toString()このレイアウトの文字列表現を返します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のtoString
- 戻り値:
- このレイアウトの文字列表現
 
- 
equalspublic boolean equals(Object other) 指定されたオブジェクトをこのレイアウトと比較し、等価性を維持します。 指定されたオブジェクトもレイアウトであり、このレイアウトと等しい場合にのみ、trueを返します。 2つのレイアウトが同じ種類であり、同じサイズ、名前および位置合せ制約を持つ場合は、それらが等価であるとみなされます。 また、レイアウトの種類に応じて、追加の条件を満たす必要があります:- orderとcarrierが同じ場合、2つの値のレイアウトは等しいとみなされます
- 同じ要素数(SequenceLayout.elementCount()PREVIEWを参照してください)を持つ場合、およびそれらの要素レイアウト(SequenceLayout.elementLayout()PREVIEWを参照してください)も等しい場合、2つの順序レイアウトは等しいとみなされます
- 2つのグループ・レイアウトは同じ種類の(GroupLayout.isStruct()PREVIEW、GroupLayout.isUnion()PREVIEWを参照してください)であり、メンバー・レイアウト(GroupLayout.memberLayouts()PREVIEWを参照してください)も同じ場合、同じとみなされます
 - 定義:
- インタフェースMemoryLayoutPREVIEW内のequals
- パラメータ:
- other- このレイアウトと等価性を持たせるために比較するオブジェクト。
- 戻り値:
- 指定されたオブジェクトがこのレイアウトに等しい場合、true。
- 関連項目:
 
- 
arrayElementVarHandlepublic VarHandle arrayElementVarHandle(int... shape) マルチディメンション配列の間接参照に使用できる「アカド」アクセス変数ハンドルを作成します。 この配列のレイアウトは、shape.lengthネストされた順序レイアウトを含む順序レイアウトです。 深さshape.lengthでの順序レイアウトの要素レイアウトは、この値のレイアウトです。 その結果、shape.length == 0の場合、配列レイアウトには1つのディメンションのみが含まれます。結果のvarハンドルは、 long型のsizes.length + 1座標を備えており、これはマルチディメンション配列の索引として使用されます。たとえば、次のメソッド・コールがあります: 次のレイアウトを持つ多ディメンション配列にアクセスするために使用できます:VarHandle arrayHandle = ValueLayout.JAVA_INT.arrayElementVarHandle(10, 20);結果のvarハンドルSequenceLayout arrayLayout = MemoryLayout.sequenceLayout(-1, MemoryLayout.sequenceLayout(10, MemoryLayout.sequenceLayout(20, ValueLayout.JAVA_INT)));arrayHandleは、タイプlongの3つの座標を備えています。各座標は、対応する順序レイアウトへの索引として解釈されます。 varハンドルの座標を左から右にそれぞれx、yおよびzとして参照する場合、varハンドルによって参照される最終オフセットは次の式で計算できます:
 また、offset = (10 * 20 * 4 * x) + (20 * 4 * y) + (4 * z)x、yおよびzの値は、次のように制約されます:- 0 <= x < arrayLayout.elementCount()
- 0 <= y < 10
- 0 <= z < 20
 次のアクセス式について考えます: 最初のケースでは、int value1 = arrayHandle.get(10, 2, 4); // ok, accessed offset = 8176 int value2 = arrayHandle.get(0, 0, 30); // out of bounds value for zx、yおよびzの値が前述の境界に適合するため、アクセスは整形式です。 2番目のケースでは、zの値が指定された範囲外であるため、IndexOutOfBoundsExceptionを使用してアクセスが失敗します。- パラメータ:
- shape- ネストされた配列ディメンションのサイズ。
- 戻り値:
- shape.length + 1- long座標を持つ多ディメンション配列を間接参照するために使用できるvarハンドル。
- 例外:
- IllegalArgumentException-- shape[i] < 0の場合、少なくとも1つの索引- i。
- UnsupportedOperationException-- bitAlignment() > bitSize()の場合。
- 関連項目:
 
- 
carrierpublic Class<?> carrier()この値レイアウトに関連付けられたキャリアを返します。- 戻り値:
- この値レイアウトに関連付けられたキャリア
 
- 
hashCodepublic int hashCode()このレイアウトのハッシュ・コード値を返します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のhashCode
- 戻り値:
- このレイアウトのハッシュ・コード値
- 関連項目:
 
- 
withNamepublic ValueLayoutPREVIEW withName(String name) サイズと位置合わせの制約がこのレイアウトと同じですが、指定された名前でメモリー・レイアウトを返します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のwithName
- パラメータ:
- name- レイアウト名。
- 戻り値:
- 指定された名前のメモリー・レイアウト。
- 関連項目:
 
- 
withBitAlignmentpublic ValueLayoutPREVIEW withBitAlignment(long alignmentBits) このレイアウトと同じサイズおよび名前のメモリー・レイアウトを返しますが、指定された整列制約(ビット単位)を使用します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のwithBitAlignment
- パラメータ:
- alignmentBits- レイアウト位置合せ制約。ビットで表されます。
- 戻り値:
- 指定された整列制約を持つメモリー・レイアウト。
 
- 
nameインタフェースからコピーされた説明:MemoryLayoutこのレイアウトに関連付けられている名前(もしあれば)を返します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のname
- 戻り値:
- このレイアウトに関連付けられている名前(もしあれば)
- 関連項目:
 
- 
bitAlignmentpublic final long bitAlignment()インタフェースからコピーされた説明:MemoryLayoutこのレイアウトに関連付けられている配置制約をビット単位で返します。 レイアウトの位置合せにより、レイアウトのビット単位の位置合せである2つのAの機能が定義されます。A <= 8の場合、A/8は、このレイアウトを適切にポイントするポインタに対して整列する必要があるバイト数です。 このため、:- A=8では、すべての(通常の意味で)がパケットで共有されないことを意味します。
- A=64は、aligned (on LP64)、- A=32int aligned、- A=16short alignedなどの単語を意味します。
- A=512は、x86/SV ABI (AVX-512データ)で必要とされる最も厳密な位置合せです。
 MemoryLayout.withBitAlignment(long)PREVIEWを参照してください)に明示的な位置合せ制約が設定されていない場合、このメソッドは、このレイアウトに関連付けられている「自然整列」制約(ビット単位)を返します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のbitAlignment
- 戻り値:
- レイアウト位置合せ制約をビット単位で指定します。
 
- 
byteSizepublic long byteSize()インタフェースからコピーされた説明:MemoryLayoutレイアウト・サイズをバイト単位で返します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のbyteSize
- 戻り値:
- レイアウト・サイズ(バイト)
 
- 
bitSizepublic long bitSize()インタフェースからコピーされた説明:MemoryLayoutレイアウト・サイズをビット単位で返します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のbitSize
- 戻り値:
- レイアウト・サイズ(ビット単位)
 
- 
isPaddingpublic boolean isPadding()インタフェースからコピーされた説明:MemoryLayoutこのレイアウトがパディング・レイアウトの場合、trueを返します。- 定義:
- インタフェースMemoryLayoutPREVIEW内のisPadding
- 戻り値:
- このレイアウトがパディング・レイアウトの場合、true
 
 
- 
ValueLayoutを使用できます。