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.OfBoolean
Javaboolean
と同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()
に設定されたバイト順序。static final ValueLayout.OfByte
Javabyte
と同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()
に設定されたバイト順序。static final ValueLayout.OfChar
Javachar
と同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()
に設定されたバイト順序。static final ValueLayout.OfDouble
Javadouble
と同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()
に設定されたバイト順序。static final ValueLayout.OfFloat
Javafloat
と同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()
に設定されたバイト順序。static final ValueLayout.OfInt
Javaint
と同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()
に設定されたバイト順序。static final ValueLayout.OfLong
Javalong
と同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()
に設定されたバイト順序。static final ValueLayout.OfShort
Javashort
と同じサイズの値レイアウト定数、8に設定されたビット整列、およびByteOrder.nativeOrder()
に設定されたバイト順序。 -
メソッドのサマリー
修飾子と型メソッド説明final long
このレイアウトに関連付けられている配置制約をビット単位で返します。long
bitSize()
レイアウト・サイズをビット単位で返します。long
byteSize()
レイアウト・サイズをバイト単位で返します。Class<?>
carrier()
この値レイアウトに関連付けられたキャリアを返します。boolean
このオブジェクトと他のオブジェクトが等しいかどうかを示します。int
hashCode()
オブジェクトのハッシュ・コード値を返します。boolean
hasSize()
このレイアウトに指定したサイズがある場合、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=32
int aligned、A=16
short 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
-