モジュール java.base
パッケージ java.lang.foreign

インタフェースAddressLayout

すべてのスーパー・インタフェース:
MemoryLayoutPREVIEW, ValueLayoutPREVIEW

public sealed interface AddressLayout extends ValueLayoutPREVIEW
AddressLayoutは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効な場合のみ、プログラムでAddressLayoutを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
メモリーの一部のリージョンのアドレスをモデル化するために使用される値のレイアウト。 アドレス・レイアウトに関連付けられた運送業者はMemorySegment.classです。 アドレス・レイアウトのサイズと配置は、プラットフォームに依存する (たとえば、64ビット・プラットフォームでは、アドレス・レイアウトのサイズと整列が8バイトに設定されます)です。

アドレス・レイアウトでは、オプションで「ターゲット・レイアウト」を使用できます。 ターゲット・レイアウトがTのアドレス・レイアウトを使用して、レイアウトがTのメモリー・リージョンのアドレスをモデル化できます。 たとえば、ターゲット・レイアウトがValueLayout.JAVA_INTPREVIEWのアドレス・レイアウトを使用して、4バイトの長さのメモリー・リージョンのアドレスをモデル化できます。 ターゲット・レイアウトの指定は、次の状況で役立ちます:

導入されたバージョン:
19
関連項目:
  • メソッドの詳細

    • withName

      AddressLayoutPREVIEW withName(String name)
      このレイアウトと同じ特性を持つメモリー・レイアウトを、指定された名前で返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のwithName
      定義:
      インタフェースValueLayoutPREVIEW内のwithName
      パラメータ:
      name - レイアウト名。
      戻り値:
      このレイアウトと同じ特性を持つが、指定された名前を持つメモリー・レイアウト
      関連項目:
    • withoutName

      AddressLayoutPREVIEW withoutName()
      このレイアウトと同じ特性を持つメモリー・レイアウトを名前なしで返します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のwithoutName
      定義:
      インタフェースValueLayoutPREVIEW内のwithoutName
      戻り値:
      このレイアウトと同じ特性を持つが名前のないメモリー・レイアウト
      関連項目:
    • withByteAlignment

      AddressLayoutPREVIEW withByteAlignment(long byteAlignment)
      このレイアウトと同じ特性を持つメモリー・レイアウトを返しますが、指定された整列制約(バイト単位)を使用します。
      定義:
      インタフェースMemoryLayoutPREVIEW内のwithByteAlignment
      定義:
      インタフェースValueLayoutPREVIEW内のwithByteAlignment
      パラメータ:
      byteAlignment - バイト単位で表されるレイアウト整列制約。
      戻り値:
      このレイアウトと同じ特性を持つメモリー・レイアウト。ただし、指定された整列制約(バイト単位)
    • withOrder

      AddressLayoutPREVIEW withOrder(ByteOrder order)
      このレイアウトと同じ特性を持つ値レイアウトを、指定されたバイト順序で返します。
      定義:
      インタフェースValueLayoutPREVIEW内のwithOrder
      パラメータ:
      order - 必要なバイト順。
      戻り値:
      このレイアウトと同じ特性を持つが、指定されたバイト順序を持つ値レイアウト
    • withTargetLayout

      AddressLayoutPREVIEW withTargetLayout(MemoryLayoutPREVIEW layout)
      このアドレス・レイアウトと同じキャリア、整列制約、名前および順序で、指定されたターゲット・レイアウトに関連付けられているアドレス・レイアウトを返します。 返されるアドレス・レイアウトでは、RAWアドレスに「メモリー・セグメント」PREVIEWとしてアクセスでき、そのサイズは指定されたレイアウトのサイズに設定されます。 さらに、アクセスされたRAWアドレスが、指定されたレイアウトの整列制約と互換性がない場合、IllegalArgumentExceptionがスローされます。
      APIのノート:
      このメソッドは、アドレス・レイアウトの作成にも使用できます。アドレス・レイアウトを使用すると、最大サイズ(e.g. Long.MAX_VALUE)のネイティブ・メモリー・セグメントが作成されます。 これを行うには、次のように、サイズが指定されていないターゲット順序レイアウトを使用します:
       AddressLayout addressLayout   = ...
       AddressLayout unboundedLayout = addressLayout.withTargetLayout(
               MemoryLayout.sequenceLayout(ValueLayout.JAVA_BYTE));
      

      このメソッドは制限付きです。 制限されたメソッドは安全ではなく、誤って使用するとJVMがクラッシュしたり、悪化したりするとメモリーが破損する可能性があります。 したがって、クライアントは制限付きメソッドに応じて屈折し、可能な場合は安全でサポートされている機能を使用する必要があります。

      パラメータ:
      layout - ターゲット・レイアウト。
      戻り値:
      このレイアウトと同じ特性を持つが、指定されたターゲット・レイアウトを持つアドレス・レイアウト。
      例外:
      IllegalCallerException - 呼び出し元が、ネイティブ・アクセスが有効になっていないモジュール内にある場合。
      関連項目:
    • withoutTargetLayout

      AddressLayoutPREVIEW withoutTargetLayout()
      このアドレス・レイアウトと同じキャリア、整列制約、名前および順序で、ターゲット・レイアウトなしでアドレス・レイアウトを返します。
      APIのノート:
      これは、ターゲット・レイアウトが異なるが等しくない2つのアドレス・レイアウトを比較する場合に便利です。
      戻り値:
      このレイアウトと同じ特性を持つが、ターゲット・レイアウトがないアドレス・レイアウト。
      関連項目:
    • targetLayout

      Optional<MemoryLayoutPREVIEW> targetLayout()
      このアドレス・レイアウト(もしあれば)に関連付けられたターゲット・レイアウトを返します。
      戻り値:
      このアドレス・レイアウトに関連付けられたターゲット・レイアウト (もしあれば)