MethodHandles.ExactInvoker(MethodType) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
特定の型の任意のメソッド ハンドル<を呼び出すために使用できる特殊な <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
を抽出し、 の呼び出し側メソッドX
をT
検索し、呼び出し側メソッドを としてX.invoke(T, A...)
呼び出します。 (型T
が不明であるため、 を呼び出X.invokeExact
しても機能しません)。分散変換、収集変換、またはその他の引数変換が必要な場合は、 の型X
と互換性がある限り、呼び出し元X
に 1 回適用し、多くのM
メソッド ハンドル値で再利用できます。 <p style="font-size:smaller;"><em>(注: 呼び出し側メソッドは、Core Reflection API では使用できません。宣言またはinvokeExact
invoke
メソッドで 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 ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。