インタフェースValueLayout

すべてのスーパー・インタフェース:
MemoryLayout
既知のすべてのサブインタフェース:
AddressLayout, ValueLayout.OfBoolean, ValueLayout.OfByte, ValueLayout.OfChar, ValueLayout.OfDouble, ValueLayout.OfFloat, ValueLayout.OfInt, ValueLayout.OfLong, ValueLayout.OfShort

基本データ型の値をモデル化するレイアウト。 値レイアウトによってモデル化される値の例には、「整数」値(署名済または未署名)、floating-point値およびaddress値があります。

各値レイアウトには、サイズ、整列(両方ともバイトで表します)、「バイト・オーダー」および「キャリア」があります。つまり、値レイアウトを使用してメモリーのリージョンを「アクセス」するときに使用するJavaタイプです。

このクラスは、Javaプリミティブ型およびアドレスの有用な値レイアウト定数を定義します。

APIのノート:
Javaレイアウト定数のいくつかの特性は、プラットフォームに依存します。 たとえば、これらの定数のバイト順序は「ネイティブ・バイト順序」に設定されているため、配列やByteBufferなどの他のAPIを簡単に操作できます。
実装要件:
クラスおよびサブクラスの実装は、不変、スレッド・セーフおよびvalue-basedです。
シール済クラス階層グラフ:
ValueLayoutの密封されたクラス階層グラフValueLayoutの密封されたクラス階層グラフ
導入されたバージョン:
22
  • フィールド詳細

    • ADDRESS

      static final AddressLayout ADDRESS
      sizeof(size_t)に設定されたマシン・アドレス (size_t)のバイト整列と同じサイズを持つアドレス配列定数。ByteOrder.nativeOrder()に設定されたバイト順序。
    • JAVA_BYTE

      static final ValueLayout.OfByte JAVA_BYTE
      サイズがJava byte、1に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
    • JAVA_BOOLEAN

      static final ValueLayout.OfBoolean JAVA_BOOLEAN
      サイズがJava boolean、1に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
    • JAVA_CHAR

      static final ValueLayout.OfChar JAVA_CHAR
      サイズがJava char、2に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
    • JAVA_SHORT

      static final ValueLayout.OfShort JAVA_SHORT
      サイズがJava short、2に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
    • JAVA_INT

      static final ValueLayout.OfInt JAVA_INT
      サイズがJava int、4に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
    • JAVA_LONG

      static final ValueLayout.OfLong JAVA_LONG
      サイズがJava longの値レイアウト定数、バイト位置が8に設定され、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。
    • JAVA_FLOAT

      static final ValueLayout.OfFloat JAVA_FLOAT
      サイズがJava float、4に設定されたバイト整列、およびByteOrder.nativeOrder()に設定されたバイト順序と同じ値レイアウト定数。
    • JAVA_DOUBLE

      static final ValueLayout.OfDouble JAVA_DOUBLE
      サイズがJava doubleの値レイアウト定数、バイト位置が8に設定され、バイト順序がByteOrder.nativeOrder()に設定されている値レイアウト定数。
    • ADDRESS_UNALIGNED

      static final AddressLayout ADDRESS_UNALIGNED
      サイズがマシン・アドレス (size_t)のものと同じで、バイト順序がByteOrder.nativeOrder()に設定されている、整列されていないアドレス・レイアウト定数。 次のコードと同等です:
      ADDRESS.withByteAlignment(1);
      
      APIのノート:
      調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
    • JAVA_CHAR_UNALIGNED

      static final ValueLayout.OfChar JAVA_CHAR_UNALIGNED
      サイズがJavaのcharと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:
      JAVA_CHAR.withByteAlignment(1);
      
      APIのノート:
      調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
    • JAVA_SHORT_UNALIGNED

      static final ValueLayout.OfShort JAVA_SHORT_UNALIGNED
      サイズがJavaのshortと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:
      JAVA_SHORT.withByteAlignment(1);
      
      APIのノート:
      調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
    • JAVA_INT_UNALIGNED

      static final ValueLayout.OfInt JAVA_INT_UNALIGNED
      サイズがJavaのintと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:
      JAVA_INT.withByteAlignment(1);
      
      APIのノート:
      調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
    • JAVA_LONG_UNALIGNED

      static final ValueLayout.OfLong JAVA_LONG_UNALIGNED
      サイズがJavaのlongと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:
      JAVA_LONG.withByteAlignment(1);
      
      APIのノート:
      調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
    • JAVA_FLOAT_UNALIGNED

      static final ValueLayout.OfFloat JAVA_FLOAT_UNALIGNED
      サイズがJavaのfloatと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:
      JAVA_FLOAT.withByteAlignment(1);
      
      APIのノート:
      調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
    • JAVA_DOUBLE_UNALIGNED

      static final ValueLayout.OfDouble JAVA_DOUBLE_UNALIGNED
      サイズがJavaのdoubleと同じで、バイト順序がByteOrder.nativeOrder()に設定されている整列されていない値レイアウト定数。 次のコードと同等です:
      JAVA_DOUBLE.withByteAlignment(1);
      
      APIのノート:
      調整されていない値レイアウトを使用すると、パフォーマンスや移植性の問題が発生する可能性があるため、注意する必要があります。
  • メソッドの詳細

    • order

      ByteOrder order()
      値のバイト順を返します。
      戻り値:
      値のバイト順
    • withOrder

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

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

      Class<?> carrier()
      この値レイアウトに関連付けられたキャリアを返します。
      戻り値:
      この値レイアウトに関連付けられたキャリア
    • withName

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

      ValueLayout withByteAlignment(long byteAlignment)
      このレイアウトと同じ特性を持つメモリー・レイアウトを返しますが、指定された整列制約(バイト単位)を使用します。
      定義:
      インタフェースMemoryLayout内のwithByteAlignment
      パラメータ:
      byteAlignment - レイアウト整列制約(バイト単位)
      戻り値:
      このレイアウトと同じ特性を持つメモリー・レイアウト。ただし、指定された整列制約(バイト単位)
      例外:
      IllegalArgumentException - byteAlignmentが2の累乗でない場合
    • varHandle

      VarHandle varHandle()
      指定されたメモリー・セグメントで、この値レイアウトによって記述された値にアクセスするために使用できるvarハンドルを返します。

      戻されるvarハンドルの「var型」は、この値レイアウトの「キャリア・タイプ」で、座標タイプのリストは(MemorySegment, long)で、メモリー・セグメント座標はアクセスされるメモリー・セグメントに対応し、long座標はアクセスが発生するアクセスされるメモリー・セグメントへのバイト・オフセットに対応します。

      返されるvarハンドルは、この値レイアウトの「線形拘束」に従ってアクセスが整列されていることをチェックします。

      APIのノート:
      このメソッドは似ていますが、空のパス要素配列を使用してMemoryLayout#varHandle(PathElement...)をコールするよりも効率的です。これは、var args配列の作成を回避するためです。返されるvarハンドルは、メモリー・レイアウトから導出されたすべてのメモリー・アクセスvarハンドルに共通する特定の「アクセス・モード制限」を備えています。
      戻り値:
      特定のメモリー・セグメントで、この値レイアウトで記述された値にアクセスするために使用できるvarハンドル
      関連項目: