MethodHandles.ExactInvoker(MethodType) メソッド

定義

特定の型の任意のメソッド ハンドル<を呼び出すために使用できる特殊な <em>呼び出し元メソッド ハンドル/em> を生成します。これは、 のように生成MethodHandle#invokeExact invokeExactされます。

[Android.Runtime.Register("exactInvoker", "(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? ExactInvoker (Java.Lang.Invoke.MethodType? type);
[<Android.Runtime.Register("exactInvoker", "(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member ExactInvoker : Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

パラメーター

type
MethodType

目的のターゲットの種類

戻り値

指定された型の任意のメソッド ハンドルを呼び出すのに適したメソッド ハンドル

属性

注釈

特定の型の任意のメソッド ハンドル<を呼び出すために使用できる特殊な <em>呼び出し元メソッド ハンドル/em> を生成します。これは、 のように生成MethodHandle#invokeExact invokeExactされます。 結果の呼び出し元には、目的の型と完全に等しい型が含まれますが、型 MethodHandleの追加の先頭引数を受け入れることを除きます。

このメソッドは、次のコードと同じです (ただし、より効率的な場合があります): publicLookup().findVirtual(MethodHandle.class, "invokeExact", type)<p style="font-size:smaller;"><em>Discussion:</em> Invoker メソッド ハンドルは、不明な型の可変メソッド ハンドルを操作する場合に役立ちます。 たとえば、変数メソッド ハンドルMの呼び出しをエミュレートinvokeExactするには、その型Tを抽出し、 の呼び出し側メソッドXT検索し、呼び出し側メソッドを としてX.invoke(T, A...)呼び出します。 (型Tが不明であるため、 を呼び出X.invokeExactしても機能しません)。分散変換、収集変換、またはその他の引数変換が必要な場合は、 の型Xと互換性がある限り、呼び出し元Xに 1 回適用し、多くのMメソッド ハンドル値で再利用できます。 <p style="font-size:smaller;"><em>(注: 呼び出し側メソッドは、Core Reflection API では使用できません。宣言またはinvokeExactinvokeメソッドで java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke を呼び出そうとすると、 が<発生java.lang.UnsupportedOperationException UnsupportedOperationExceptionします。/Em>

このメソッドは、リフレクション例外またはセキュリティ例外をスローしません。

java.lang.invoke.MethodHandles.exactInvoker(java.lang.invoke.MethodType)Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象