java.lang.Object
jdk.incubator.foreign.ValueLayout
- すべての実装されたインタフェース:
Constable,MemoryLayout
- 直系の既知のサブクラス:
ValueLayout.OfAddress,ValueLayout.OfBoolean,ValueLayout.OfByte,ValueLayout.OfChar,ValueLayout.OfDouble,ValueLayout.OfFloat,ValueLayout.OfInt,ValueLayout.OfLong,ValueLayout.OfShort
public sealed class ValueLayout extends Object implements MemoryLayout permits ValueLayout.OfAddress, ValueLayout.OfByte, ValueLayout.OfBoolean, ValueLayout.OfChar, ValueLayout.OfShort, ValueLayout.OfInt, ValueLayout.OfLong, ValueLayout.OfFloat, ValueLayout.OfDouble
値レイアウト。 値レイアウトは、「整数」タイプの(署名済または未署名)やfloating-pointタイプなど、基本データ型の値に関連付けられたメモリー・レイアウトをモデル化するために使用します。 各値レイアウトには、サイズ、位置合せ(ビット単位)、「バイト・オーダー」および「通信事業者」があります。つまり、値レイアウトを使用してメモリー・リージョンを「アクセス」するときに使用するJavaタイプです。
このクラスは、Javaプリミティブ型およびアドレスの有用な値レイアウト定数を定義します。 このクラスのレイアウト定数は、暗黙的な整列とバイト順序の想定を行います: このクラスのすべてのレイアウト定数はバイト揃えで、バイト順序は「プラットフォームのデフォルト」に設定されるため、配列やByteBufferなどの他のAPIを簡単に操作できます。
これはvalue-basedクラスです。プログラマは、equalのインスタンスを交換可能として扱い、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。 比較する場合は、equalsメソッドを使用することをお薦めします。
特に指定がないかぎり、null引数、またはこのクラスのメソッドに1つ以上のnull要素を含む配列引数を渡すと、NullPointerExceptionがスローされます。
- 実装要件:
- このクラスは不変でスレッドセーフです。
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static final classキャリアがMemoryAddress.classの値レイアウト。static final classキャリアがboolean.classの値レイアウト。static final classキャリアがbyte.classの値レイアウト。static final classキャリアがchar.classの値レイアウト。static final classキャリアがdouble.classの値レイアウト。static final classキャリアがfloat.classの値レイアウト。static final classキャリアがint.classの値レイアウト。static final classキャリアがlong.classの値レイアウト。static final classキャリアがshort.classの値レイアウト。インタフェースjdk.incubator.foreign.MemoryLayoutで宣言されたネストされたクラス/インタフェース
MemoryLayout.PathElement -
フィールドのサマリー
フィールド修飾子と型フィールド説明static final ValueLayout.OfAddressサイズがマシン・アドレス(size_t)と同じ、ビット整列が8、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。static final ValueLayout.OfBooleanJavabooleanと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfByteJavabyteと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfCharJavacharと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfDoubleJavadoubleと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfFloatJavafloatと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfIntJavaintと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfLongJavalongと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。static final ValueLayout.OfShortJavashortと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 -
メソッドのサマリー
修飾子と型メソッド説明final longこのレイアウトに関連付けられている配置制約をビット単位で返します。longbitSize()レイアウト・サイズをビット単位で返します。longbyteSize()レイアウト・サイズをバイト単位で返します。Class<?>carrier()この値レイアウトに関連付けられたキャリアを返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。inthashCode()オブジェクトのハッシュ・コード値を返します。booleanhasSize()このレイアウトに指定したサイズがある場合、trueを返します。booleanこのレイアウトがパディング・レイアウトの場合、trueを返します。name()このレイアウトに関連付けられたname (もしあれば)を返します。order()値バイト順を返します。toString()オブジェクトの文字列表現を返します。withBitAlignment(long alignmentBits) 目的の位置合せ制約を機能する新しいレイアウトを作成します。必要なレイアウトnameが機能する新しいレイアウトを作成します。指定されたバイト順で新しい値レイアウトを返します。クラス java.lang.Objectで宣言されたメソッド
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitインタフェースjdk.incubator.foreign.MemoryLayoutで宣言されたメソッド
bitAlignment, bitOffset, bitOffsetHandle, bitSize, byteAlignment, byteOffset, byteOffsetHandle, byteSize, hasSize, isPadding, map, name, select, sliceHandle, varHandle
-
フィールド詳細
-
ADDRESS
public static final ValueLayout.OfAddress ADDRESSサイズがマシン・アドレス(size_t)と同じ、ビット整列が8、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。 次のコードと同等です:MemoryLayout.valueLayout(MemoryAddress.class, ByteOrder.nativeOrder()).withBitAlignment(8); -
JAVA_BYTE
public static final ValueLayout.OfByte JAVA_BYTEJavabyteと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(byte.class, ByteOrder.nativeOrder()).withBitAlignment(8); -
JAVA_BOOLEAN
public static final ValueLayout.OfBoolean JAVA_BOOLEANJavabooleanと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(boolean.class, ByteOrder.nativeOrder()).withBitAlignment(8); -
JAVA_CHAR
public static final ValueLayout.OfChar JAVA_CHARJavacharと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(char.class, ByteOrder.nativeOrder()).withBitAlignment(8); -
JAVA_SHORT
public static final ValueLayout.OfShort JAVA_SHORTJavashortと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(short.class, ByteOrder.nativeOrder()).withBitAlignment(8); -
JAVA_INT
public static final ValueLayout.OfInt JAVA_INTJavaintと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(int.class, ByteOrder.nativeOrder()).withBitAlignment(8); -
JAVA_LONG
public static final ValueLayout.OfLong JAVA_LONGJavalongと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(long.class, ByteOrder.nativeOrder()).withBitAlignment(8); -
JAVA_FLOAT
public static final ValueLayout.OfFloat JAVA_FLOATJavafloatと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(float.class, ByteOrder.nativeOrder()).withBitAlignment(8); -
JAVA_DOUBLE
public static final ValueLayout.OfDouble JAVA_DOUBLEJavadoubleと同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()に設定されたバイト順序。 次のコードと同等です:MemoryLayout.valueLayout(double.class, ByteOrder.nativeOrder()).withBitAlignment(8);
-
-
メソッドの詳細
-
order
public ByteOrder order()値バイト順を返します。- 戻り値:
- 値のバイト順
-
withOrder
public ValueLayout withOrder(ByteOrder order) 指定されたバイト順で新しい値レイアウトを返します。- パラメータ:
order- 必要なバイト順。- 戻り値:
- 指定されたバイト順で、新規の値レイアウト。
-
toString
public String toString()次のクラスからコピーされた説明:Objectオブジェクトの文字列表現を返します。- 定義:
- インタフェース
MemoryLayout内のtoString - オーバーライド:
toString、クラス:Object- 戻り値:
- このオブジェクトの文字列表現
-
equals
public boolean equals(Object other) 次のクラスからコピーされた説明:Objectこのオブジェクトと他のオブジェクトが等しいかどうかを示します。equalsメソッドは、null以外のオブジェクト参照での同値関係を実装します。- 反射性(reflexive): null以外の参照値
xについて、x.equals(x)はtrueを返します。 - 対称性(symmetric): null以外の参照値
xおよびyについて、y.equals(x)がtrueを返す場合に限り、x.equals(y)はtrueを返します。 - 推移性(transitive): null以外の参照値
x、y、およびzについて、x.equals(y)がtrueを返し、y.equals(z)がtrueを返す場合、x.equals(z)はtrueを返します。 - 一貫性(consistent): null以外の参照値
xおよびyについて、x.equals(y)の複数の呼出しは、このオブジェクトに対するequalsによる比較で使われた情報が変更されていなければ、一貫してtrueを返すか、一貫してfalseを返します。 - null以外の参照値
xについて、x.equals(null)はfalseを返します。
等価関係は、操作対象の要素を「同等クラス」にパーティション化し、等価クラスのすべてのメンバーは互いに等しくなります。 等価クラスのメンバーは、少なくともなんらかの目的で互いに置換可能です。
- 定義:
- インタフェース
MemoryLayout内のequals - パラメータ:
other- 比較対象の参照オブジェクト。- 戻り値:
- このオブジェクトがobj引数と同じである場合は
true、それ以外の場合はfalse。 - 関連項目:
- 反射性(reflexive): null以外の参照値
-
carrier
public Class<?> carrier()この値レイアウトに関連付けられたキャリアを返します。- 戻り値:
- この値レイアウトに関連付けられたキャリア
-
hashCode
public int hashCode()次のクラスからコピーされた説明:Objectオブジェクトのハッシュ・コード値を返します。 このメソッドは、HashMapによって提供されるハッシュ表などの、ハッシュ表の利点のためにサポートされています。hashCodeの一般的な規則は次のとおりです。- Javaアプリケーションの実行中に同じオブジェクトに対して複数回呼び出された場合は常に、このオブジェクトに対する
equalsの比較で使用される情報が変更されていなければ、hashCodeメソッドは常に同じ整数を返す必要があります。 ただし、この整数は同じアプリケーションの実行ごとに同じである必要はありません。 - 2つのオブジェクトが
equalsメソッドに従って等しい場合、2つのオブジェクトのそれぞれでhashCodeメソッドを呼び出すと、同じ整数結果が生成される必要があります。 - 2つのオブジェクトが
equalsメソッドに従って等しくない場合、2つのオブジェクトのそれぞれでhashCodeメソッドを呼び出すと、個別の整数結果が生成される必要はありません。 ただし、プログラマは、等しくないオブジェクトに対して異なる整数の結果を生成すると、ハッシュ表のパフォーマンスが向上する可能性があることに注意するようにしてください。
- 定義:
- インタフェース
MemoryLayout内のhashCode - 戻り値:
- このオブジェクトのハッシュ・コード値。
- 関連項目:
- Javaアプリケーションの実行中に同じオブジェクトに対して複数回呼び出された場合は常に、このオブジェクトに対する
-
describeConstable
public Optional<DynamicConstantDesc<ValueLayout>> describeConstable()インタフェースからコピーされた説明:MemoryLayout- 定義:
- インタフェース
Constable内のdescribeConstable - 定義:
- インタフェース
MemoryLayout内のdescribeConstable - 戻り値:
- このレイアウトの公称記述子を含む
Optional(構成可能な場合)、または空のOptional(構成できない場合)
-
withName
public ValueLayout withName(String name) 必要なレイアウトnameが機能する新しいレイアウトを作成します。- 定義:
- インタフェース
MemoryLayout内のwithName - パラメータ:
name- レイアウト名。- 戻り値:
- このレイアウトと同じ新しいレイアウト(関連付けられているnameを除く)。
- 関連項目:
-
withBitAlignment
public ValueLayout withBitAlignment(long alignmentBits) 目的の位置合せ制約を機能する新しいレイアウトを作成します。- 定義:
- インタフェース
MemoryLayout内のwithBitAlignment - パラメータ:
alignmentBits- レイアウト位置合せ制約。ビットで表されます。- 戻り値:
- このレイアウトと同じ新しいレイアウトですが、関連付けられている位置合わせの制約を除きます。
-
name
インタフェースからコピーされた説明:MemoryLayoutこのレイアウトに関連付けられたname (もしあれば)を返します。- 定義:
- インタフェース
MemoryLayout内のname - 戻り値:
- このレイアウトに関連付けられたname (もしあれば)
- 関連項目:
-
bitAlignment
public 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)を参照してください)に明示的な位置合せ制約が設定されていない場合、このメソッドはこのレイアウトに関連付けられた「自然整列」制約(ビット単位)を返します。- 定義:
- インタフェース
MemoryLayout内のbitAlignment - 戻り値:
- レイアウト位置合せ制約をビット単位で指定します。
-
byteSize
public long byteSize()インタフェースからコピーされた説明:MemoryLayoutレイアウト・サイズをバイト単位で返します。- 定義:
- インタフェース
MemoryLayout内のbyteSize - 戻り値:
- レイアウト・サイズ(バイト)
-
hasSize
public boolean hasSize()インタフェースからコピーされた説明:MemoryLayoutこのレイアウトに指定したサイズがある場合、trueを返します。 レイアウトが(次を含む)でサイズが未指定の(SequenceLayout.elementCount()を参照してください)の順序レイアウトである場合、そのレイアウトには指定されたサイズがありません。 値レイアウト(ValueLayoutを参照してください)およびパディングのレイアウト(MemoryLayout.paddingLayout(long)を参照してください) alwaysには指定されたサイズがあるため、このメソッドは常にtrueを返します。- 定義:
- インタフェース
MemoryLayout内のhasSize - 戻り値:
- このレイアウトが指定されたサイズの場合、
true。
-
bitSize
public long bitSize()インタフェースからコピーされた説明:MemoryLayoutレイアウト・サイズをビット単位で返します。- 定義:
- インタフェース
MemoryLayout内のbitSize - 戻り値:
- レイアウト・サイズ(ビット単位)
-
isPadding
public boolean isPadding()インタフェースからコピーされた説明:MemoryLayoutこのレイアウトがパディング・レイアウトの場合、trueを返します。- 定義:
- インタフェース
MemoryLayout内のisPadding - 戻り値:
- このレイアウトがパディング・レイアウトの場合、true
-