クラスjava.lang.invoke.MethodHandle
の使用
パッケージ
説明
Javaプログラミング言語の設計にあたり基本的なクラスを提供します。
クラスやメソッド・ハンドルなどのランタイム・エンティティ用に「名目記述子」を表すクラスおよびインタフェース、および定数プール・エントリや
invokedynamic
コール・サイトなどのクラス・ファイル・エンティティ用に「名目記述子」を表すクラスおよびインタフェース。Javaランタイム外部のメモリーおよびファンクションへの低レベル・アクセスを提供します。
java.lang.invoke
パッケージは、Java Virtual Machineとやりとりするための低レベルのプリミティブを提供します。java.lang.runtime
パッケージでは、Java言語の低レベルのランタイム・サポートが提供されます。コレクション・フレームワーク、国際化サポート・クラス、サービス・ローダー、プロパティ、乱数生成、文字列解析とスキャン・クラス、Base64エンコーディングとデコード、ビット配列、およびその他のユーティリティ・クラスが含まれています。
invokedynamic
コール・サイトのリンクに使用されるインタフェースおよびクラスが含まれます。通常のJavaオブジェクトのリンカーを含みます。
独自の言語固有のオブジェクト・モデルおよび型変換を実装するために言語ランタイムに必要なインタフェースおよびクラスが含まれます。
言語ランタイムが独自の言語固有のオブジェクト・モデルおよび型変換を実装しやすくするために、一部のクラスの基本的な実装と様々なユーティリティを提供することで、より便利なクラスが含まれています。
Dynalinkの使用をより便利にするクラスが含まれています。これには、一部のクラスの基本的な実装と様々なユーティリティを提供します。
-
java.langでのMethodHandleの使用
修飾子と型メソッド説明StringTemplate.Processor.Linkage.linkage
(List<String> fragments, MethodType type) このメソッドは、type
で指定された引数のある引数を指定して呼び出されると、テンプレート・プロセッサのプロセス・メソッドによって返される結果と等しい結果を返すMethodHandle
を作成します。 -
java.lang.constantでのMethodHandleの使用
-
java.lang.foreignでのMethodHandleの使用
修飾子と型メソッド説明default MethodHandle
MemoryLayout.byteOffsetHandle
(MemoryLayout.PathElementPREVIEW... elements) 指定されたレイアウト・パスによって選択されたレイアウトのオフセット(バイト)を計算するメソッド・ハンドルを作成します。パス内の初期レイアウトはこのレイアウトです。Linker.downcallHandle
(FunctionDescriptorPREVIEW function, Linker.OptionPREVIEW... options) 指定されたシグネチャで外部関数を呼び出すために使用されるメソッド・ハンドルを作成します。Linker.downcallHandle
(MemorySegmentPREVIEW address, FunctionDescriptorPREVIEW function, Linker.OptionPREVIEW... options) 指定されたシグネチャとアドレスで外部関数を呼び出すために使用されるメソッド・ハンドルを作成します。default MethodHandle
MemoryLayout.sliceHandle
(MemoryLayout.PathElementPREVIEW... elements) 修飾子と型メソッド説明Linker.upcallStub
(MethodHandle target, FunctionDescriptorPREVIEW function, ArenaPREVIEW arena, Linker.OptionPREVIEW... options) 指定されたアリーナに関連付けられた関数ポインタとして、ほかの外部関数に渡すことができるアップコール・スタブを作成します。 -
java.lang.invokeでのMethodHandleの使用
修飾子と型メソッド説明static MethodHandle
MethodHandles.arrayConstructor
(Class<?> arrayClass) anewarray
バイトコードの場合と同様に、必要な型の配列を構築するメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.arrayElementGetter
(Class<?> arrayClass) aaload
バイトコードの場合と同様に、配列の要素に対する読み取りアクセスを提供するメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.arrayElementSetter
(Class<?> arrayClass) astore
バイトコードの場合と同様に、配列の要素への書き込みアクセスを与えるメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.arrayLength
(Class<?> arrayClass) arraylength
バイトコードの場合と同様に、配列の長さを返すメソッド・ハンドルを生成します。MethodHandle.asCollector
(int collectArgPos, Class<?> arrayType, int arrayLength) array-collectingメソッド・ハンドルを作成します。このハンドルは、指定された位置から始まる特定の数の位置引数を受け入れ、配列引数に収集します。MethodHandle.asCollector
(Class<?> arrayType, int arrayLength) 末尾の指定された数の定位置引数を受け取り、それらを集めて1つの配列引数に格納するような、配列収集メソッド・ハンドルを作成します。MethodHandle.asFixedArity()
固定引数カウント・メソッド・ハンドル(その他の点では現在のメソッド・ハンドルと同等のもの)を作成します。MethodHandle.asSpreader
(int spreadArgPos, Class<?> arrayType, int arrayLength) array-spreadingメソッド・ハンドルを作成します。このハンドルは、指定された位置の配列引数を受け入れ、その要素を配列のかわりに位置引数として分散します。MethodHandle.asSpreader
(Class<?> arrayType, int arrayLength) 末尾の1つの配列引数を受け取り、その要素を複数の定位置引数に分配するような、配列分配メソッド・ハンドルを作成します。final MethodHandle
MethodHandle.asType
(MethodType newType) 現在のメソッド・ハンドルの型を新しい型に適応させるアダプタ・メソッド・ハンドルを生成します。MethodHandle.asVarargsCollector
(Class<?> arrayType) 末尾の任意の数の定位置引数を受け取り、それらを集めて1つの配列引数に格納できるような、可変引数アダプタを作成します。MethodHandles.Lookup.bind
(Object receiver, String name, MethodType type) 非staticメソッドの早期バインド・メソッド・ハンドルを生成します。値x
をメソッド・ハンドルの最初の引数にバインドしますが、その呼出しは行いません。static MethodHandle
MethodHandles.catchException
(MethodHandle target, Class<? extends Throwable> exType, MethodHandle handler) ターゲットのメソッド・ハンドルを例外ハンドラの内部で実行することによって、このターゲットを適応させるメソッド・ハンドルを作成します。static MethodHandle
MethodHandles.collectArguments
(MethodHandle target, int pos, MethodHandle filter) ターゲット・メソッド・ハンドルを、フィルタ(別のメソッド・ハンドル)でその引数のサブシーケンスを前処理することにより、適応させます。static MethodHandle
要求された戻り値の型を持ち、呼び出されるたびに指定された定数値を返すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.countedLoop
(MethodHandle iterations, MethodHandle init, MethodHandle body) 指定された数の反復を実行するループを構築します。static MethodHandle
MethodHandles.countedLoop
(MethodHandle start, MethodHandle end, MethodHandle init, MethodHandle body) 数値の範囲にわたってカウントするループを構築します。static MethodHandle
MethodHandles.doWhileLoop
(MethodHandle init, MethodHandle body, MethodHandle pred) 初期化子、本文および述語からdo-while
ループを構築します。static MethodHandle
MethodHandles.dropArguments
(MethodHandle target, int pos, Class<?>... valueTypes) いくつかのダミー引数を破棄してから指定された別のtargetメソッド・ハンドルを呼び出すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.dropArguments
(MethodHandle target, int pos, List<Class<?>> valueTypes) いくつかのダミー引数を破棄してから指定された別のtargetメソッド・ハンドルを呼び出すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.dropArgumentsToMatch
(MethodHandle target, int skip, List<Class<?>> newTypes, int pos) 指定されたパラメータ・タイプ・リストと一致するようにターゲット・メソッド・ハンドルを適応させます。static MethodHandle
MethodHandles.dropReturn
(MethodHandle target) ターゲット・ハンドル(もしあれば)の戻り値を削除します。abstract MethodHandle
CallSite.dynamicInvoker()
このコール・サイトにリンクされているinvokedynamic命令と同等のメソッド・ハンドルを生成します。final MethodHandle
ConstantCallSite.dynamicInvoker()
このコール・サイトの永続的なターゲットを返します。final MethodHandle
MutableCallSite.dynamicInvoker()
このコール・サイトにリンクされているinvokedynamic命令と同等のメソッド・ハンドルを生成します。final MethodHandle
VolatileCallSite.dynamicInvoker()
このコール・サイトにリンクされているinvokedynamic命令と同等のメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.empty
(MethodType type) リクエストされた型のメソッド・ハンドルを生成します。引数は無視され、何も実行されず、戻り値の型に応じて適切なデフォルトが返されます。static MethodHandle
MethodHandles.exactInvoker
(MethodType type) 特殊なインボーカ・メソッド・ハンドルを生成します(これを使用すれば、指定された型の任意のメソッド・ハンドルを、invokeExact
を使用する場合と同様に呼び出すことができる)。static MethodHandle
MethodHandles.explicitCastArguments
(MethodHandle target, MethodType newType) 指定されたメソッド・ハンドルの型を新しい型に適応させるために、引数と戻り値の型の変換をペア単位で行うメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.filterArguments
(MethodHandle target, int pos, MethodHandle... filters) ターゲット・メソッド・ハンドルを適応させるため、その1つ以上の引数をそれぞれ固有の単項フィルタ関数を使って前処理したあと、前処理を行った各引数を対応するフィルタ関数の結果で置き換えてターゲットを呼び出します。static MethodHandle
MethodHandles.filterReturnValue
(MethodHandle target, MethodHandle filter) ターゲット・メソッド・ハンドルを適応させるため、その戻り値(存在する場合)をフィルタ(別のメソッド・ハンドル)で後処理します。MethodHandles.Lookup.findConstructor
(Class<?> refc, MethodType type) 指定された型のコンストラクタを使ってオブジェクトの作成と初期化を行うメソッド・ハンドルを生成します。MethodHandles.Lookup.findGetter
(Class<?> refc, String name, Class<?> type) 非staticフィールドに対する読取りアクセスを提供するメソッド・ハンドルを生成します。MethodHandles.Lookup.findSetter
(Class<?> refc, String name, Class<?> type) 非staticフィールドに対する書込みアクセスを提供するメソッド・ハンドルを生成します。MethodHandles.Lookup.findSpecial
(Class<?> refc, String name, MethodType type, Class<?> specialCaller) 仮想メソッドの早期にバインドされるメソッド・ハンドルを生成します。MethodHandles.Lookup.findStatic
(Class<?> refc, String name, MethodType type) staticメソッドのメソッド・ハンドルを生成します。MethodHandles.Lookup.findStaticGetter
(Class<?> refc, String name, Class<?> type) staticフィールドに対する読取りアクセスを提供するメソッド・ハンドルを生成します。MethodHandles.Lookup.findStaticSetter
(Class<?> refc, String name, Class<?> type) staticフィールドに対する書込みアクセスを提供するメソッド・ハンドルを生成します。MethodHandles.Lookup.findVirtual
(Class<?> refc, String name, MethodType type) 仮想メソッドのメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.foldArguments
(MethodHandle target, int pos, MethodHandle combiner) ターゲット・メソッド・ハンドルは、指定された位置から始めて、その引数の一部を前処理し、前処理の結果でターゲットをコールして、折り畳まれた引数の直前に元の引数のシーケンスに挿入することによって適応されます。static MethodHandle
MethodHandles.foldArguments
(MethodHandle target, MethodHandle combiner) ターゲット・メソッド・ハンドルを適応させるため、その引数のいくつかを前処理したあと、前処理の結果を元の一連の引数内に挿入してターゲットを呼び出します。abstract MethodHandle
CallSite.getTarget()
このコール・サイトの特定のクラスで定義された動作に従って、コール・サイトのターゲット・メソッドを返します。final MethodHandle
ConstantCallSite.getTarget()
コール・サイトのターゲット・メソッドを返しますが、これは、ConstantCallSite
のfinal
フィールドのように振る舞います。final MethodHandle
MutableCallSite.getTarget()
コール・サイトのターゲット・メソッドを返しますが、これは、MutableCallSite
の通常のフィールドのように振る舞います。final MethodHandle
VolatileCallSite.getTarget()
コール・サイトのターゲット・メソッドを返しますが、これは、VolatileCallSite
のvolatile
フィールドのように振る舞います。static MethodHandle
MethodHandles.guardWithTest
(MethodHandle test, MethodHandle target, MethodHandle fallback) テスト(boolean値のメソッド・ハンドル)で保護することでターゲット・メソッド・ハンドルを適応させるメソッド・ハンドルを作成します。SwitchPoint.guardWithTest
(MethodHandle target, MethodHandle fallback) 常にターゲット、フォール・バックのいずれかに委譲するメソッド・ハンドルを返します。static MethodHandle
呼出し時に唯一の引数の値を返すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.insertArguments
(MethodHandle target, int pos, Object... values) ターゲット・メソッド・ハンドルの呼出しの前に、1つ以上のバインド引数をメソッド・ハンドルに提供します。static MethodHandle
MethodHandles.invoker
(MethodType type) 特殊なインボーカ・メソッド・ハンドルを生成します(これを使用すれば、指定された型と互換性のある任意のメソッド・ハンドルを、invoke
を使用する場合と同様に呼び出すことができる)。static MethodHandle
MethodHandles.iteratedLoop
(MethodHandle iterator, MethodHandle init, MethodHandle body) Iterator<T>
によって生成された値の範囲にあるループを構築します。static MethodHandle
MethodHandles.loop
(MethodHandle[]... clauses) 反復ごとに更新およびチェックされる複数のループ変数を持つループを表すメソッド・ハンドルを構築します。static MethodHandle
StringConcatFactory.makeConcatWithTemplate
(List<String> fragments, List<Class<?>> ptypes) Preview.StringTemplate
PREVIEW連結を容易にするための簡略化された連結メソッド。static MethodHandle
StringConcatFactory.makeConcatWithTemplateGetters
(List<String> fragments, List<MethodHandle> getters, int maxSlots) Preview.このメソッドは、指定されたgetterの受信側である1つの入力を予期するMethodHandle
を作成します。static MethodHandle
MethodHandles.permuteArguments
(MethodHandle target, MethodType newType, int... reorder) 引数の順序を変更することによって、指定されたメソッド・ハンドルの呼出し順序を新しい型に適応させるメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.spreadInvoker
(MethodType type, int leadingArgCount) 指定されたtype
の任意のメソッド・ハンドルを呼び出すメソッド・ハンドルを生成しますが、その際、指定された数の末尾の引数が単一の末尾のObject[]
配列で置き換えられます。static MethodHandle
MethodHandles.tableSwitch
(MethodHandle fallback, MethodHandle... targets) 表スイッチ・メソッド・ハンドルを作成します。これは、セレクタと呼ばれる特定のターゲット索引に基づいて、ターゲット・メソッド・ハンドルのセットを切り替えるために使用できます。static MethodHandle
MethodHandles.throwException
(Class<?> returnType, Class<? extends Throwable> exType) 指定されたexType
の例外をスローするメソッド・ハンドルを生成します。VarHandle.toMethodHandle
(VarHandle.AccessMode accessMode) このVarHandleおよび指定されたアクセス・モードにバインドされたメソッド・ハンドルを取得します。static MethodHandle
MethodHandles.tryFinally
(MethodHandle target, MethodHandle cleanup) target
メソッド・ハンドルをtry-finally
ブロックにラップして適応させるメソッド・ハンドルを作成します。ルックアップ・クラスがアクセス権を持つ場合に、mへの直接メソッド・ハンドルを作成します。MethodHandles.Lookup.unreflectConstructor
(Constructor<?> c) リフレクトされたコンストラクタのメソッド・ハンドルを生成します。MethodHandles.Lookup.unreflectGetter
(Field f) リフレクトされたフィールドに対する読取りアクセス権を提供するメソッド・ハンドルを生成します。MethodHandles.Lookup.unreflectSetter
(Field f) リフレクトされたフィールドに対する書込みアクセス権を提供するメソッド・ハンドルを生成します。MethodHandles.Lookup.unreflectSpecial
(Method m, Class<?> specialCaller) リフレクトされたメソッドのメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.varHandleExactInvoker
(VarHandle.AccessMode accessMode, MethodType type) 特別な「呼び出しメソッドhandle」を生成します。このメソッドを使用して、関連付けられたアクセス・モード・タイプが指定のタイプと互換性がある任意のVarHandleでシグネチャ-多相アクセス・モード・メソッドを呼び出すことができます。static MethodHandle
MethodHandles.varHandleInvoker
(VarHandle.AccessMode accessMode, MethodType type) 特別な「呼び出しメソッドhandle」を生成します。このメソッドを使用して、関連付けられたアクセス・モード・タイプが指定のタイプと互換性がある任意のVarHandleでシグネチャ-多相アクセス・モード・メソッドを呼び出すことができます。static MethodHandle
MethodHandles.whileLoop
(MethodHandle init, MethodHandle pred, MethodHandle body) 初期化子、本文および述語からwhile
ループを構築します。MethodHandle.withVarargs
(boolean makeVarargs) static MethodHandle
MethodHandleProxies.wrapperInstanceTarget
(Object x) このラッパー・インスタンスの一意のメソッドと動作が同等であるターゲット・メソッド・ハンドルを生成または回復します。static MethodHandle
リクエストされた戻り型の定数メソッド・ハンドルを生成します。このハンドルは、呼び出されるたびにその型のデフォルト値を返します。修飾子と型メソッド説明static List
<MethodHandle> StringConcatFactory.makeConcatWithTemplateCluster
(List<String> fragments, List<Class<?>> ptypes, int maxSlots) Preview.このメソッドは、MethodHandle
ごとに必要なスロット数に基づいて、大きな連結を個別のMethodHandles
に分割します。修飾子と型メソッド説明static <T> T
MethodHandleProxies.asInterfaceInstance
(Class<T> intfc, MethodHandle target) 指定されたメソッド・ハンドルに呼出しをリダイレクトする、指定された単一メソッド・インタフェースのインスタンスを生成します。static MethodHandle
MethodHandles.catchException
(MethodHandle target, Class<? extends Throwable> exType, MethodHandle handler) ターゲットのメソッド・ハンドルを例外ハンドラの内部で実行することによって、このターゲットを適応させるメソッド・ハンドルを作成します。static MethodHandle
MethodHandles.collectArguments
(MethodHandle target, int pos, MethodHandle filter) ターゲット・メソッド・ハンドルを、フィルタ(別のメソッド・ハンドル)でその引数のサブシーケンスを前処理することにより、適応させます。static VarHandle
MethodHandles.collectCoordinates
(VarHandle target, int pos, MethodHandle filter) Preview.フィルタ(メソッド・ハンドル)を使用して座標値のサブ・シーケンスを前処理することで、ターゲット変数ハンドルを調整します。static MethodHandle
MethodHandles.countedLoop
(MethodHandle iterations, MethodHandle init, MethodHandle body) 指定された数の反復を実行するループを構築します。static MethodHandle
MethodHandles.countedLoop
(MethodHandle start, MethodHandle end, MethodHandle init, MethodHandle body) 数値の範囲にわたってカウントするループを構築します。static MethodHandle
MethodHandles.doWhileLoop
(MethodHandle init, MethodHandle body, MethodHandle pred) 初期化子、本文および述語からdo-while
ループを構築します。static MethodHandle
MethodHandles.dropArguments
(MethodHandle target, int pos, Class<?>... valueTypes) いくつかのダミー引数を破棄してから指定された別のtargetメソッド・ハンドルを呼び出すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.dropArguments
(MethodHandle target, int pos, List<Class<?>> valueTypes) いくつかのダミー引数を破棄してから指定された別のtargetメソッド・ハンドルを呼び出すメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.dropArgumentsToMatch
(MethodHandle target, int skip, List<Class<?>> newTypes, int pos) 指定されたパラメータ・タイプ・リストと一致するようにターゲット・メソッド・ハンドルを適応させます。static MethodHandle
MethodHandles.dropReturn
(MethodHandle target) ターゲット・ハンドル(もしあれば)の戻り値を削除します。static MethodHandle
MethodHandles.explicitCastArguments
(MethodHandle target, MethodType newType) 指定されたメソッド・ハンドルの型を新しい型に適応させるために、引数と戻り値の型の変換をペア単位で行うメソッド・ハンドルを生成します。static MethodHandle
MethodHandles.filterArguments
(MethodHandle target, int pos, MethodHandle... filters) ターゲット・メソッド・ハンドルを適応させるため、その1つ以上の引数をそれぞれ固有の単項フィルタ関数を使って前処理したあと、前処理を行った各引数を対応するフィルタ関数の結果で置き換えてターゲットを呼び出します。static VarHandle
MethodHandles.filterCoordinates
(VarHandle target, int pos, MethodHandle... filters) Preview.単項フィルタ関数を使用して着信座標値を前処理することで、ターゲット変数ハンドルを適応させます。static MethodHandle
MethodHandles.filterReturnValue
(MethodHandle target, MethodHandle filter) ターゲット・メソッド・ハンドルを適応させるため、その戻り値(存在する場合)をフィルタ(別のメソッド・ハンドル)で後処理します。static VarHandle
MethodHandles.filterValue
(VarHandle target, MethodHandle filterToTarget, MethodHandle filterFromTarget) Preview.フィルタ関数のペアを使用して受信値と送信値を事前処理することで、ターゲット変数ハンドルを適応させます。static MethodHandle
MethodHandles.foldArguments
(MethodHandle target, int pos, MethodHandle combiner) ターゲット・メソッド・ハンドルは、指定された位置から始めて、その引数の一部を前処理し、前処理の結果でターゲットをコールして、折り畳まれた引数の直前に元の引数のシーケンスに挿入することによって適応されます。static MethodHandle
MethodHandles.foldArguments
(MethodHandle target, MethodHandle combiner) ターゲット・メソッド・ハンドルを適応させるため、その引数のいくつかを前処理したあと、前処理の結果を元の一連の引数内に挿入してターゲットを呼び出します。static MethodHandle
MethodHandles.guardWithTest
(MethodHandle test, MethodHandle target, MethodHandle fallback) テスト(boolean値のメソッド・ハンドル)で保護することでターゲット・メソッド・ハンドルを適応させるメソッド・ハンドルを作成します。SwitchPoint.guardWithTest
(MethodHandle target, MethodHandle fallback) 常にターゲット、フォール・バックのいずれかに委譲するメソッド・ハンドルを返します。static MethodHandle
MethodHandles.insertArguments
(MethodHandle target, int pos, Object... values) ターゲット・メソッド・ハンドルの呼出しの前に、1つ以上のバインド引数をメソッド・ハンドルに提供します。static Object
ConstantBootstraps.invoke
(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args) 指定された引数を使ってメソッド・ハンドルを呼び出した結果を返します。static MethodHandle
MethodHandles.iteratedLoop
(MethodHandle iterator, MethodHandle init, MethodHandle body) Iterator<T>
によって生成された値の範囲にあるループを構築します。static MethodHandle
MethodHandles.loop
(MethodHandle[]... clauses) 反復ごとに更新およびチェックされる複数のループ変数を持つループを表すメソッド・ハンドルを構築します。static CallSite
LambdaMetafactory.metafactory
(MethodHandles.Lookup caller, String interfaceMethodName, MethodType factoryType, MethodType interfaceMethodType, MethodHandle implementation, MethodType dynamicMethodType) 適切な型適応および引数の部分評価の後、指定されたMethodHandle
への委譲により、1つ以上のインタフェースを実装する単純な関数オブジェクトの作成を容易にします。static MethodHandle
MethodHandles.permuteArguments
(MethodHandle target, MethodType newType, int... reorder) 引数の順序を変更することによって、指定されたメソッド・ハンドルの呼出し順序を新しい型に適応させるメソッド・ハンドルを生成します。static <T extends Member>
TMethodHandles.reflectAs
(Class<T> expected, MethodHandle target) 直接メソッド・ハンドルの未チェックの解読を実行します。MethodHandles.Lookup.revealDirect
(MethodHandle target) この参照オブジェクトまたは類似のオブジェクトによって作成された直接メソッド・ハンドルを解読します。abstract void
CallSite.setTarget
(MethodHandle newTarget) このコール・サイトの特定のクラスで定義された動作に従って、このコール・サイトのターゲット・メソッドを更新します。final void
ConstantCallSite.setTarget
(MethodHandle ignore) 常にUnsupportedOperationException
をスローします。void
MutableCallSite.setTarget
(MethodHandle newTarget) このコール・サイトのターゲット・メソッドを通常の変数として更新します。void
VolatileCallSite.setTarget
(MethodHandle newTarget) このコール・サイトのターゲット・メソッドをvolatile変数として更新します。static MethodHandle
MethodHandles.tableSwitch
(MethodHandle fallback, MethodHandle... targets) 表スイッチ・メソッド・ハンドルを作成します。これは、セレクタと呼ばれる特定のターゲット索引に基づいて、ターゲット・メソッド・ハンドルのセットを切り替えるために使用できます。static MethodHandle
MethodHandles.tryFinally
(MethodHandle target, MethodHandle cleanup) target
メソッド・ハンドルをtry-finally
ブロックにラップして適応させるメソッド・ハンドルを作成します。static MethodHandle
MethodHandles.whileLoop
(MethodHandle init, MethodHandle pred, MethodHandle body) 初期化子、本文および述語からwhile
ループを構築します。修飾子コンストラクタ説明ConstantCallSite
(MethodHandle target) 永続的なターゲットを持つコール・サイトを作成します。protected
ConstantCallSite
(MethodType targetType, MethodHandle createTargetHook) 永続的なターゲットを持つコール・サイトを作成します(コール・サイト自体にバインドされる場合があります)。MutableCallSite
(MethodHandle target) 初期ターゲット・メソッド・ハンドルを持つコール・サイト・オブジェクトを作成します。VolatileCallSite
(MethodHandle target) ターゲットへのvolatileバインディングを持つコール・サイトを作成します。 -
java.lang.runtimeでのMethodHandleの使用
修飾子と型メソッド説明static Object
ObjectMethods.bootstrap
(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters) invokedynamic
コール・サイトまたは動的な定数プール・エントリのコンポーネント名およびアクセッサ・メソッドの説明に基づいて、Object.equals(Object)
、Object.hashCode()
およびObject.toString()
メソッドを生成するブートストラップ・メソッド。static CallSite
TemplateRuntime.processStringTemplate
(MethodHandles.Lookup lookup, String name, MethodType type, MethodHandle processorGetter, String... fragments) 静的最終プロセッサの文字列テンプレート・ブートストラップ・メソッド。 -
java.utilでのMethodHandleの使用
修飾子と型メソッド説明FormatProcessor.linkage
(List<String> fragments, MethodType type) MethodHandle
を作成します。StringTemplate
PREVIEWの値とともに指定すると、FormatProcessor.process(StringTemplate)
PREVIEWによって提供される結果と同等の結果が生成されます。 -
jdk.dynalinkでのMethodHandleの使用
修飾子と型メソッド説明void
RelinkableCallSite.initialize
(MethodHandle relinkAndInvoke) 再リンクおよび呼出しメソッド・ハンドルを設定して、再リンク可能コール・サイトを初期化するために動的リンカーによって呼び出されます。void
RelinkableCallSite.relink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) このメソッドは、呼び出しサイトが再リンクされるたびに動的リンカーによって呼び出されます。(例外についてはRelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)
を参照してください)。void
RelinkableCallSite.resetAndRelink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) このメソッドは、コール・サイトが再リンクされるたびにダイナミック・リンカーによって呼び出され、リンカーはコール・サイトが以前のリンケージ・ステート(それはRelinkableCallSite.relink(GuardedInvocation, MethodHandle)
とどのように違うのですか?)を破棄することを望みます。 -
jdk.dynalink.beansでのMethodHandleの使用
修飾子と型メソッド説明MissingMemberHandlerFactory.createMissingMemberHandler
(LinkRequest linkRequest, LinkerServices linkerServices) 特定のリンク・リクエストに対して欠落しているメンバー動作を実装するのに適したメソッド・ハンドルを返します。 -
jdk.dynalink.linkerでのMethodHandleの使用
修飾子と型メソッド説明LinkerServices.asType
(MethodHandle handle, MethodType fromType) asType(MethodType)
と同様ですが、使用可能なすべてのGuardingTypeConverterFactory
実装によって生成されるメソッド・ハンドルのフックも使用され、言語固有の型強制パラメータを提供します。MethodTypeConversionStrategy.asType
(MethodHandle target, MethodType newType) メソッド・ハンドルを新しい型に変換します。default MethodHandle
LinkerServices.asTypeLosslessReturn
(MethodHandle handle, MethodType fromType) LinkerServices.asType(MethodHandle, MethodType)
と同様ですが、戻り値の型変換を特に処理します。GuardedInvocation.compose
(MethodHandle fallback) 呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。GuardedInvocation.compose
(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback) 呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。LinkerServices.filterInternalObjects
(MethodHandle target) 潜在的に内部言語ランタイム・オブジェクトを受信できるすべてのパラメータにフィルタが追加されるように、メソッド・ハンドルを変更します。これにより、それらのオブジェクトがエスケープされないようにできます。GuardedInvocation.getGuard()
ガード・メソッド・ハンドルを返します。GuardedInvocation.getInvocation()
起動メソッド・ハンドルを返します。LinkerServices.getTypeConverter
(Class<?> sourceType, Class<?> targetType) ソース・タイプとターゲット・タイプを指定すると、それらの間で変換されるメソッド・ハンドルが返されます。MethodHandleTransformer.transform
(MethodHandle target) メソッド・ハンドルを変換します。修飾子と型メソッド説明LinkerServices.asType
(MethodHandle handle, MethodType fromType) asType(MethodType)
と同様ですが、使用可能なすべてのGuardingTypeConverterFactory
実装によって生成されるメソッド・ハンドルのフックも使用され、言語固有の型強制パラメータを提供します。MethodTypeConversionStrategy.asType
(MethodHandle target, MethodType newType) メソッド・ハンドルを新しい型に変換します。default MethodHandle
LinkerServices.asTypeLosslessReturn
(MethodHandle handle, MethodType fromType) LinkerServices.asType(MethodHandle, MethodType)
と同様ですが、戻り値の型変換を特に処理します。GuardedInvocation.compose
(MethodHandle fallback) 呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。GuardedInvocation.compose
(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback) 呼出し、ガード、スイッチ・ポイントおよび例外をコンポジット・メソッド・ハンドルに構成します。このハンドルは、ガードが失敗した場合や呼出しが無効になった場合にフォールバックする方法を認識します。GuardedInvocation.filterArguments
(int pos, MethodHandle... filters) 呼び出しと(それが存在し、少なくともpos + 1
パラメータ)をMethodHandles.filterArguments(MethodHandle, int, MethodHandle...)
で保護する両方に引数フィルタを適用します。LinkerServices.filterInternalObjects
(MethodHandle target) 潜在的に内部言語ランタイム・オブジェクトを受信できるすべてのパラメータにフィルタが追加されるように、メソッド・ハンドルを変更します。これにより、それらのオブジェクトがエスケープされないようにできます。GuardedInvocation.replaceMethods
(MethodHandle newInvocation, MethodHandle newGuard) 異なるメソッドを使用して新しいガード付き呼出しを作成し、スイッチ・ポイントを保持します。MethodHandleTransformer.transform
(MethodHandle target) メソッド・ハンドルを変換します。修飾子コンストラクタ説明GuardedInvocation
(MethodHandle invocation) 無条件でガードされた新しい呼出しを作成します。GuardedInvocation
(MethodHandle invocation, MethodHandle guard) ガード・メソッド・ハンドルを使用して、新しいガード付き呼出しを作成します。GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint) ガード・メソッド・ハンドルとスイッチ・ポイントの両方を使用して、ガード付きの新しい呼出しを作成します。GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint[] switchPoints, Class<? extends Throwable> exception) ガード・メソッド・ハンドル、無効化に使用できる任意の数のスイッチ・ポイント、および起動時にスローされた場合も無効化される例外を使用して、新しいガード付き呼出しを作成します。GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint, Class<? extends Throwable> exception) ガード・メソッド・ハンドル、スイッチ・ポイントを使用して無効化できるスイッチ・ポイント、および起動時にスローされた場合も無効化される例外を使用して、新しいガード付き呼出しを作成します。GuardedInvocation
(MethodHandle invocation, SwitchPoint switchPoint) スイッチ・ポイントによって無効化できる新しいガード付き呼出しを作成します。 -
jdk.dynalink.linker.supportでのMethodHandleの使用
修飾子と型メソッド説明static MethodHandle
Guards.asType
(MethodHandle test, MethodType type) ガードとして使用するメソッド・ハンドルを取得し、リクエストされた型に適応しますが、booleanを返します。static MethodHandle
Guards.asType
(LinkerServices linkerServices, MethodHandle test, MethodType type) ガードとして使用するメソッド・ハンドルを取得し、リクエストされた型に適応しますが、booleanを返します。Lookup.findGetter
(Class<?> refc, String name, Class<?> type) static MethodHandle
Lookup.findOwnSpecial
(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes) ルックアップを指定すると、Lookup.findSpecial(Class, String, MethodType)
を使用して、そのルックアップのクラスに対するメソッドを検索します。Lookup.findOwnSpecial
(String name, Class<?> rtype, Class<?>... ptypes) Lookup.findSpecial(Class, String, MethodType)
を使用して、そのルックアップのクラスのメソッドを検索します。static MethodHandle
Lookup.findOwnStatic
(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes) ルックアップを指定すると、Lookup.findStatic(Class, String, MethodType)
を使用して、そのルックアップのクラスに対するメソッドを検索します。Lookup.findOwnStatic
(String name, Class<?> rtype, Class<?>... ptypes) Lookup.findStatic(Class, String, MethodType)
を使用して、そのルックアップのクラスのメソッドを検索します。Lookup.findSpecial
(Class<?> declaringClass, String name, MethodType type) 基礎となるルックアップに対してMethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)
を実行します。Lookup.findStatic
(Class<?> declaringClass, String name, MethodType type) 基礎となるルックアップに対してMethodHandles.Lookup.findStatic(Class, String, MethodType)
を実行します。Lookup.findVirtual
(Class<?> declaringClass, String name, MethodType type) 基礎となるルックアップに対してMethodHandles.Lookup.findVirtual(Class, String, MethodType)
を実行します。static MethodHandle
Guards.getClassGuard
(Class<?> clazz) 特定のクラスであるための唯一の引数をテストするguardメソッドを作成します。static MethodHandle
Guards.getIdentityGuard
(Object obj) 他のオブジェクトと同じ参照を持つために唯一の引数をテストするガード・メソッドを作成static MethodHandle
Guards.getInstanceOfGuard
(Class<?> clazz) 特定のクラスのインスタンスであるための唯一の引数をテストするガード・メソッドを作成します。static MethodHandle
Guards.isArray
(int pos, MethodType type) 指定された位置の引数がJava配列である場合にtrueを返すメソッド・ハンドルを作成します。static MethodHandle
Guards.isInstance
(Class<?> clazz, int pos, MethodType type) 指定された型の引数を持つメソッド・ハンドルを作成しますが、ブール戻り値を使用します。static MethodHandle
Guards.isInstance
(Class<?> clazz, MethodType type) 指定された型の引数を持つメソッド・ハンドルを作成しますが、ブール戻り値を使用します。static MethodHandle
Guards.isNotNull()
最初の引数がnullでないかどうかをテストするガードを返します。static MethodHandle
Guards.isNull()
最初の引数がnullかどうかをテストするガードを返します。static MethodHandle
Guards.isOfClass
(Class<?> clazz, MethodType type) 指定された型の引数を持つガード・メソッド・ハンドルを作成しますが、ブール戻り値を使用します。DefaultInternalObjectFilter.transform
(MethodHandle target) static MethodHandle
Lookup.unreflect
(MethodHandles.Lookup lookup, Method m) static MethodHandle
Lookup.unreflectConstructor
(MethodHandles.Lookup lookup, Constructor<?> c) Lookup.unreflectConstructor
(Constructor<?> c) Lookup.unreflectGetter
(Field f) Lookup.unreflectSetter
(Field f) 修飾子と型メソッド説明static MethodHandle
Guards.asType
(MethodHandle test, MethodType type) ガードとして使用するメソッド・ハンドルを取得し、リクエストされた型に適応しますが、booleanを返します。static MethodHandle
Guards.asType
(LinkerServices linkerServices, MethodHandle test, MethodType type) ガードとして使用するメソッド・ハンドルを取得し、リクエストされた型に適応しますが、booleanを返します。DefaultInternalObjectFilter.transform
(MethodHandle target) 修飾子コンストラクタ説明DefaultInternalObjectFilter
(MethodHandle parameterFilter, MethodHandle returnFilter) 新しいフィルタを作成します。 -
jdk.dynalink.supportでのMethodHandleの使用
修飾子と型メソッド説明void
AbstractRelinkableCallSite.initialize
(MethodHandle relinkAndInvoke) void
ChainedCallSite.relink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) void
SimpleRelinkableCallSite.relink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) void
ChainedCallSite.resetAndRelink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) void
SimpleRelinkableCallSite.resetAndRelink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)