java.lang.Object
jdk.incubator.foreign.GroupLayout
- すべての実装されたインタフェース:
Constable
,MemoryLayout
public final class GroupLayout extends Object
グループ・レイアウトは、複数の「メンバー・レイアウト」を結合するために使用します。 メンバー・レイアウトを結合する方法は2つあります: メンバー・レイアウトが順番にレイアウトされる場合、結果のグループ・レイアウトは「構造体」 (
MemoryLayout.ofStruct(MemoryLayout...)
を参照してください)と呼ばれ、逆にすべてのメンバー・レイアウトが同じ開始オフセットに配置される場合、結果として得られるグループ・レイアウトはunion (MemoryLayout.ofUnion(MemoryLayout...)
を参照してください)と言われます。
これはvalue-basedクラスで、GroupLayout
のインスタンスでアイデンティティに依存する操作(参照の等価性の(==
)、アイデンティティ・ハッシュ・コード、同期化など)を使用すると、予測できない結果が生じる可能性があるため、使用しないでください。 比較する場合は、equals
メソッドを使用することをお薦めします。
- 実装要件:
- このクラスは不変でスレッドセーフです。
-
ネストされたクラスのサマリー
-
メソッドのサマリー
修飾子と型 メソッド 説明 long
bitAlignment()
このレイアウトに関連付けられている配置制約をビット単位で返します。long
bitSize()
レイアウト・サイズをビット単位で計算します。Optional<DynamicConstantDesc<GroupLayout>>
describeConstable()
boolean
equals(Object other)
このオブジェクトと他のオブジェクトが等しいかどうかを示します。int
hashCode()
オブジェクトのハッシュ・コード値を返します。boolean
hasSize()
このレイアウトには指定されたサイズがありますか?boolean
isStruct()
このグループ・レイアウトは「構造体」ですか?boolean
isUnion()
このグループ・レイアウトはunionですか?List<MemoryLayout>
memberLayouts()
このグループに関連付けられたメンバー・レイアウトを返します。Optional<String>
name()
このレイアウトに関連するname (もしあれば)を返します。GroupLayout
withBitAlignment(long alignmentBits)
目的の位置合せ制約を機能する新しいレイアウトを作成します。GroupLayout
withName(String name)
必要なレイアウトnameが機能する新しいレイアウトを作成します。インタフェースjdk.incubator.foreign.MemoryLayoutで宣言されたメソッド
byteAlignment, byteSize, map, offset, select, toString, varHandle
-
メソッドの詳細
-
memberLayouts
public List<MemoryLayout> memberLayouts()このグループに関連付けられたメンバー・レイアウトを返します。- APIのノート:
- メンバー・レイアウトが返される順序は、グループ・レイアウト・ファクトリ・メソッド(
MemoryLayout.ofStruct(MemoryLayout...)
、MemoryLayout.ofUnion(MemoryLayout...)
を参照してください。)のいずれかにメンバー・レイアウトが渡された順序と同じです。 - 戻り値:
- このグループに関連付けられているメンバー・レイアウト。
-
isStruct
public boolean isStruct()このグループ・レイアウトは「構造体」ですか?- 戻り値:
- true:このグループ・レイアウトが「構造体」である場合。
-
isUnion
public boolean isUnion()このグループ・レイアウトはunionですか?- 戻り値:
- true:このグループ・レイアウトがunionである場合。
-
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
を返します。
Object
クラスのequals
メソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。つまり、null以外の参照値x
とy
について、このメソッドはx
とy
が同じオブジェクトを参照する(x == y
がtrue
)場合にだけtrue
を返します。通常、このメソッドをオーバーライドする場合は、
hashCode
メソッドを常にオーバーライドして、「等価なオブジェクトは等価なハッシュ・コードを保持する必要がある」というhashCode
メソッドの汎用規約に従う必要があることに留意してください。- 定義:
- インタフェース
MemoryLayout
内のequals
- パラメータ:
other
- 比較対象の参照オブジェクト。- 戻り値:
- このオブジェクトがobj引数と同じである場合は
true
、それ以外の場合はfalse
。 - 関連項目:
Object.hashCode()
、HashMap
- 反射性(reflexive): null以外の参照値
-
hashCode
public int hashCode()次のクラスからコピーされた説明:Object
オブジェクトのハッシュ・コード値を返します。 このメソッドは、HashMap
によって提供されるハッシュ表などの、ハッシュ表の利点のためにサポートされています。hashCode
の一般的な規則は次のとおりです。- Javaアプリケーションの実行中に同じオブジェクトに対して複数回呼び出された場合は常に、このオブジェクトに対する
equals
の比較で使用される情報が変更されていなければ、hashCode
メソッドは常に同じ整数を返す必要があります。 ただし、この整数は同じアプリケーションの実行ごとに同じである必要はありません。 equals(Object)
メソッドに従って2つのオブジェクトが等しい場合は、2つの各オブジェクトに対するhashCode
メソッドの呼出しによって同じ整数の結果が生成される必要があります。Object.equals(java.lang.Object)
メソッドに従って2つのオブジェクトが等しくない場合は、2つの各オブジェクトに対するhashCode
メソッドの呼出しによって異なる整数の結果が生成される必要はありません。 ただし、プログラマは、等しくないオブジェクトに対して異なる整数の結果を生成すると、ハッシュ表のパフォーマンスが向上する可能性があることに注意するようにしてください。
- 定義:
- インタフェース
MemoryLayout
内のhashCode
- 戻り値:
- このオブジェクトのハッシュ・コード値。
- 関連項目:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
- Javaアプリケーションの実行中に同じオブジェクトに対して複数回呼び出された場合は常に、このオブジェクトに対する
-
describeConstable
public Optional<DynamicConstantDesc<GroupLayout>> describeConstable()インタフェースからコピーされた説明:MemoryLayout
-
withName
public GroupLayout withName(String name)必要なレイアウトnameが機能する新しいレイアウトを作成します。- 定義:
- インタフェース
MemoryLayout
内のwithName
- パラメータ:
name
- レイアウト名。- 戻り値:
- 関連付けられたnameを除き、このレイアウトと同じ新しいレイアウト。
- 関連項目:
MemoryLayout.name()
-
withBitAlignment
public GroupLayout withBitAlignment(long alignmentBits)目的の位置合せ制約を機能する新しいレイアウトを作成します。- 定義:
- インタフェース
MemoryLayout
内のwithBitAlignment
- パラメータ:
alignmentBits
- レイアウト位置合せ制約。ビットで表されます。- 戻り値:
- このレイアウトと同じ新しいレイアウト。ただし、関連付けられている位置合せ制約を除きます。
-
name
インタフェースからコピーされた説明:MemoryLayout
このレイアウトに関連するname (もしあれば)を返します。- 定義:
- インタフェース
MemoryLayout
内のname
- 戻り値:
- レイアウトname (もしあれば)。
- 関連項目:
MemoryLayout.withName(String)
-
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
- 戻り値:
- レイアウト位置合せ制約をビット単位で指定します。
-
hasSize
public boolean hasSize()インタフェースからコピーされた説明:MemoryLayout
このレイアウトには指定されたサイズがありますか? レイアウトが(次を含む)でサイズが未指定の(SequenceLayout.elementCount()
を参照してください)の順序レイアウトである場合、そのレイアウトには指定されたサイズがありません。 値レイアウト(ValueLayout
を参照してください)およびパディングのレイアウト(MemoryLayout.ofPaddingBits(long)
を参照してください) alwaysには指定されたサイズがあるため、このメソッドは常にtrue
を返します。- 定義:
- インタフェース
MemoryLayout
内のhasSize
- 戻り値:
- このレイアウトが指定されたサイズの場合、
true
。
-
bitSize
public long bitSize()インタフェースからコピーされた説明:MemoryLayout
レイアウト・サイズをビット単位で計算します。- 定義:
- インタフェース
MemoryLayout
内のbitSize
- 戻り値:
- レイアウトのサイズ(ビット単位)。
-