- すべてのスーパー・インタフェース:
MemoryLayout
,ValueLayout
public sealed interface AddressLayout extends ValueLayout
メモリーの一部のリージョンのアドレスをモデル化するために使用される値のレイアウト。 アドレス・レイアウトに関連付けられた運送業者は
MemorySegment.class
です。 アドレス・レイアウトのサイズと配置は、プラットフォームに依存する (たとえば、64ビット・プラットフォームでは、アドレス・レイアウトのサイズと整列が8バイトに設定されます)です。
アドレス・レイアウトでは、オプションで「ターゲット・レイアウト」を使用できます。 ターゲット・レイアウトがT
のアドレス・レイアウトを使用して、レイアウトがT
のメモリー・リージョンのアドレスをモデル化できます。 たとえば、ターゲット・レイアウトがValueLayout.JAVA_INT
のアドレス・レイアウトを使用して、4バイトの長さのメモリー・リージョンのアドレスをモデル化できます。 ターゲット・レイアウトの指定は、次の状況で役立ちます:
- 別のメモリー・セグメントからアドレスを読み取って取得したメモリー・セグメントにアクセスする場合(
MemorySegment.getAtIndex(AddressLayout, long)
の使用など)。 - ダウンコール・メソッド・ハンドルを作成する場合は、
Linker.downcallHandle(FunctionDescriptor, Option...)
RESTRICTEDを使用 - アップ・コール・スタブを作成する場合は、
Linker.upcallStub(MethodHandle, FunctionDescriptor, Arena, Option...)
RESTRICTEDを使用します。
- 実装要件:
- このインタフェースの実装は不変、スレッド・セーフ、およびvalue-basedです。
- 導入されたバージョン:
- 22
- 関連項目:
-
ネストされたクラスのサマリー
インタフェースjava.lang.foreign.MemoryLayoutで宣言されたネストされたクラス/インタフェース
MemoryLayout.PathElement
インタフェースjava.lang.foreign.ValueLayoutで宣言されたネストされたクラス/インタフェース
ValueLayout.OfBoolean, ValueLayout.OfByte, ValueLayout.OfChar, ValueLayout.OfDouble, ValueLayout.OfFloat, ValueLayout.OfInt, ValueLayout.OfLong, ValueLayout.OfShort
-
フィールドのサマリー
インタフェースjava.lang.foreign.ValueLayoutで宣言されているフィールド
ADDRESS, ADDRESS_UNALIGNED, JAVA_BOOLEAN, JAVA_BYTE, JAVA_CHAR, JAVA_CHAR_UNALIGNED, JAVA_DOUBLE, JAVA_DOUBLE_UNALIGNED, JAVA_FLOAT, JAVA_FLOAT_UNALIGNED, JAVA_INT, JAVA_INT_UNALIGNED, JAVA_LONG, JAVA_LONG_UNALIGNED, JAVA_SHORT, JAVA_SHORT_UNALIGNED
-
メソッドのサマリー
修飾子と型メソッド説明このアドレス・レイアウト (もしあれば)に関連付けられたターゲット・レイアウトを返します。withByteAlignment
(long byteAlignment) このレイアウトと同じ特性を持つメモリー・レイアウトを返しますが、指定された整列制約(バイト単位)を使用します。このレイアウトと同じ特性を持つメモリー・レイアウトを、指定された名前で返します。このレイアウトと同じ特性を持つ値レイアウトを、指定されたバイト順序で返します。このレイアウトと同じ特性を持つメモリー・レイアウトを名前なしで返します。このアドレス・レイアウトと同じキャリア、整列制約、名前および順序で、ターゲット・レイアウトなしでアドレス・レイアウトを返します。withTargetLayout
(MemoryLayout layout) Restricted.このアドレス・レイアウトと同じキャリア、整列制約、名前および順序で、指定されたターゲット・レイアウトに関連付けられているアドレス・レイアウトを返します。インタフェースjava.lang.foreign.MemoryLayoutで宣言されたメソッド
arrayElementVarHandle, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, scale, scaleHandle, select, sliceHandle, toString, varHandle
インタフェースjava.lang.foreign.ValueLayoutで宣言されたメソッド
carrier, order, varHandle
-
メソッドの詳細
-
withName
AddressLayout withName(String name) このレイアウトと同じ特性を持つメモリー・レイアウトを、指定された名前で返します。- 定義:
- インタフェース
MemoryLayout
内のwithName
- 定義:
- インタフェース
ValueLayout
内のwithName
- パラメータ:
name
- レイアウト名- 戻り値:
- このレイアウトと同じ特性を持つが、指定された名前を持つメモリー・レイアウト
- 関連項目:
-
withoutName
AddressLayout withoutName()このレイアウトと同じ特性を持つメモリー・レイアウトを名前なしで返します。- 定義:
- インタフェース
MemoryLayout
内のwithoutName
- 定義:
- インタフェース
ValueLayout
内のwithoutName
- 戻り値:
- このレイアウトと同じ特性を持つが名前のないメモリー・レイアウト
- 関連項目:
-
withByteAlignment
AddressLayout withByteAlignment(long byteAlignment) このレイアウトと同じ特性を持つメモリー・レイアウトを返しますが、指定された整列制約(バイト単位)を使用します。- 定義:
- インタフェース
MemoryLayout
内のwithByteAlignment
- 定義:
- インタフェース
ValueLayout
内のwithByteAlignment
- パラメータ:
byteAlignment
- レイアウト整列制約(バイト単位)- 戻り値:
- このレイアウトと同じ特性を持つメモリー・レイアウト。ただし、指定された整列制約(バイト単位)
-
withOrder
AddressLayout withOrder(ByteOrder order) このレイアウトと同じ特性を持つ値レイアウトを、指定されたバイト順序で返します。- 定義:
- インタフェース
ValueLayout
内のwithOrder
- パラメータ:
order
- 必要なバイト順序- 戻り値:
- このレイアウトと同じ特性を持つが、指定されたバイト順序を持つ値レイアウト
-
withTargetLayout
sealed AddressLayout withTargetLayout(MemoryLayout layout) withTargetLayout
は、Javaプラットフォームの制限付きメソッドです。制限されたメソッドは安全ではありません。不適切に使用した場合、JVMがクラッシュまたはメモリーが破損する場合があります。このアドレス・レイアウトと同じキャリア、整列制約、名前および順序で、指定されたターゲット・レイアウトに関連付けられているアドレス・レイアウトを返します。 返されたアドレス・レイアウトでは、サイズが指定されたレイアウトのサイズに設定されている「メモリー・セグメント」としてRAWアドレスにアクセスできます。 また、アクセスされたRAWアドレスが、指定されたレイアウトの配置制約と互換性がない場合、IllegalArgumentExceptionがスローされます。- APIのノート:
- このメソッドは、アドレス・レイアウトの作成にも使用できます。アドレス・レイアウトを使用すると、最大サイズ(e.g. Long.MAX_VALUE)のネイティブ・メモリー・セグメントが作成されます。 これを行うには、次のように、サイズが指定されていないターゲット順序レイアウトを使用します:
AddressLayout addressLayout = ... AddressLayout unboundedLayout = addressLayout.withTargetLayout( MemoryLayout.sequenceLayout(Long.MAX_VALUE, ValueLayout.JAVA_BYTE));
- パラメータ:
layout
- ターゲット・レイアウト- 戻り値:
- このレイアウトと同じ特性を持つが、指定されたターゲット・レイアウトを持つアドレス・レイアウト
- 例外:
IllegalCallerException
- 呼び出し元が、ネイティブ・アクセスが有効になっていないモジュール内にある場合- 関連項目:
-
withoutTargetLayout
AddressLayout withoutTargetLayout()このアドレス・レイアウトと同じキャリア、整列制約、名前および順序で、ターゲット・レイアウトなしでアドレス・レイアウトを返します。- APIのノート:
- これは、ターゲット・レイアウトが異なるが等しくない2つのアドレス・レイアウトを比較する場合に便利です。
- 戻り値:
- このレイアウトと同じ特性を持つが、ターゲット・レイアウトがないアドレス・レイアウト
- 関連項目:
-
targetLayout
Optional<MemoryLayout> targetLayout()このアドレス・レイアウト (もしあれば)に関連付けられたターゲット・レイアウトを返します。- 戻り値:
- このアドレス・レイアウトに関連付けられたターゲット・レイアウト (もしあれば)
-
withTargetLayout
を使用できます。