クラスjava.lang.invoke.VarHandleの
使用
VarHandleを使用するパッケージ
パッケージ
説明
Javaランタイム外部のメモリーおよびファンクションへの低レベル・アクセスを提供します。
java.lang.invokeパッケージは、Java Virtual Machineとやりとりするための低レベルのプリミティブを提供します。-
java.lang.foreignでのVarHandleの使用
VarHandleを返すjava.lang.foreignのメソッド修飾子と型メソッド説明MemoryLayout.arrayElementVarHandle(MemoryLayout.PathElement... elements) 指定されたレイアウト・パスによって選択されたオフセットでメモリー・セグメント内の隣接する要素にアクセスするvarハンドルを作成します。アクセスされた要素にはこのレイアウトがあり、パスの初期レイアウトはこのレイアウトです。MemoryLayout.varHandle(MemoryLayout.PathElement... elements) 指定されたレイアウト・パスによって選択されたオフセットでメモリー・セグメントにアクセスするvarハンドルを作成します。パス内の初期レイアウトはこのレイアウトになります。ValueLayout.varHandle()指定されたメモリー・セグメントで、この値レイアウトによって記述された値にアクセスするために使用できるvarハンドルを返します。 -
java.lang.invokeでのVarHandleの使用
java.lang.invokeの型VarHandleの型引数を持つサブクラスVarHandleを返すjava.lang.invokeのメソッド修飾子と型メソッド説明static VarHandleMethodHandles.arrayElementVarHandle(Class<?> arrayClass) 型arrayClassの配列の要素にアクセスするVarHandleを生成します。static VarHandleConstantBootstraps.arrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass) 配列型にVarHandleを検索します。static VarHandleMethodHandles.byteArrayViewVarHandle(Class<?> viewArrayClass, ByteOrder byteOrder) int[]やlong[]など、異なるプリミティブ配列型であるかのように見えるbyte[]配列の要素へのアクセス権を付与するVarHandleを生成します。static VarHandleMethodHandles.byteBufferViewVarHandle(Class<?> viewArrayClass, ByteOrder byteOrder) int[]またはlong[]など、byteの要素にアクセスするVarHandleを生成します。これは、ByteBufferの要素と異なるプリミティブ・コンポーネント型の要素の配列であるかのように見えます。static VarHandleMethodHandles.collectCoordinates(VarHandle target, int pos, MethodHandle filter) フィルタ(メソッド・ハンドル)を使用して座標値のサブ・シーケンスを前処理することで、ターゲット変数ハンドルを調整します。static VarHandleMethodHandles.dropCoordinates(VarHandle target, int pos, Class<?>... valueTypes) ターゲットのvarハンドルに委譲する前にダミー座標を破棄するvarハンドルを返します。static VarHandleConstantBootstraps.fieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) インスタンス・フィールドのVarHandleを検索します。static VarHandleMethodHandles.filterCoordinates(VarHandle target, int pos, MethodHandle... filters) 単項フィルタ関数を使用して着信座標値を前処理することで、ターゲット変数ハンドルを適応させます。static VarHandleMethodHandles.filterValue(VarHandle target, MethodHandle filterToTarget, MethodHandle filterFromTarget) フィルタ関数のペアを使用して受信値と送信値を事前処理することで、ターゲット変数ハンドルを適応させます。MethodHandles.Lookup.findStaticVarHandle(Class<?> decl, String name, Class<?> type) 型declのクラスで宣言された型typeの静的フィールドnameへのアクセスを提供するVarHandleを生成します。MethodHandles.Lookup.findVarHandle(Class<?> recv, String name, Class<?> type) 型recvのクラスで宣言された型typeの非静的フィールドnameへのアクセスを提供するVarHandleを生成します。static VarHandleMethodHandles.insertCoordinates(VarHandle target, int pos, Object... values) Varハンドル呼出しの前に、1つ以上の「バインド座標」を持つターゲットvarハンドルを提供します。static VarHandleMethodHandles.permuteCoordinates(VarHandle target, List<Class<?>> newCoordinates, int... reorder) 新しい座標が指定された座標と一致するように再配列することで、ターゲットのvarハンドルの座標値を適応させるvarハンドルを提供します。static VarHandleConstantBootstraps.staticFieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) 静的フィールドのVarHandleを検索します。MethodHandles.Lookup.unreflectVarHandle(Field f) クラスRで宣言されたT型の反映されたフィールドfへのアクセスを提供するVarHandleを生成します。abstract VarHandleVarHandle.withInvokeBehavior()このVarHandleと同じ変数にアクセスできるが、アクセス・モード・メソッドの呼出し動作が「起動動作」に調整されているVarHandleを返します。abstract VarHandleVarHandle.withInvokeExactBehavior()このVarHandleと同じ変数にアクセスできるが、アクセス・モード・メソッドの呼出し動作が「invoke-exactの動作」に調整されているVarHandleを返します。型VarHandleのパラメータを持つjava.lang.invokeのメソッド修飾子と型メソッド説明static VarHandleMethodHandles.collectCoordinates(VarHandle target, int pos, MethodHandle filter) フィルタ(メソッド・ハンドル)を使用して座標値のサブ・シーケンスを前処理することで、ターゲット変数ハンドルを調整します。static VarHandleMethodHandles.dropCoordinates(VarHandle target, int pos, Class<?>... valueTypes) ターゲットのvarハンドルに委譲する前にダミー座標を破棄するvarハンドルを返します。static VarHandleMethodHandles.filterCoordinates(VarHandle target, int pos, MethodHandle... filters) 単項フィルタ関数を使用して着信座標値を前処理することで、ターゲット変数ハンドルを適応させます。static VarHandleMethodHandles.filterValue(VarHandle target, MethodHandle filterToTarget, MethodHandle filterFromTarget) フィルタ関数のペアを使用して受信値と送信値を事前処理することで、ターゲット変数ハンドルを適応させます。static VarHandleMethodHandles.insertCoordinates(VarHandle target, int pos, Object... values) Varハンドル呼出しの前に、1つ以上の「バインド座標」を持つターゲットvarハンドルを提供します。static VarHandleMethodHandles.permuteCoordinates(VarHandle target, List<Class<?>> newCoordinates, int... reorder) 新しい座標が指定された座標と一致するように再配列することで、ターゲットのvarハンドルの座標値を適応させるvarハンドルを提供します。型VarHandleの型引数を持つjava.lang.invokeのメソッド・パラメータ修飾子と型メソッド説明static VarHandleConstantBootstraps.arrayVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> arrayClass) 配列型にVarHandleを検索します。static VarHandleConstantBootstraps.fieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) インスタンス・フィールドのVarHandleを検索します。static VarHandleConstantBootstraps.staticFieldVarHandle(MethodHandles.Lookup lookup, String name, Class<VarHandle> type, Class<?> declaringClass, Class<?> fieldType) 静的フィールドのVarHandleを検索します。