Language

MethodHandles.ExactInvoker(MethodType) メソッド

定義

特殊な <em>invoker メソッド ハンドル</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>invoker メソッド ハンドル</em> を生成します。このハンドルを使用すると、 MethodHandle#invokeExact invokeExactの場合と同様に、特定の型の任意のメソッド ハンドルを呼び出すことができます。 結果の呼び出し元は、型の先頭に追加の引数を受け入れる点を除き、目的の型と正確に等しい型 MethodHandle。

このメソッドは、次のコードと同じです (ただし、より効率的な場合があります)。 publicLookup().findVirtual(MethodHandle.class, "invokeExact", type)

<em>Discussion:</em> Invoker メソッド ハンドルは、不明な型の変数メソッド ハンドルを操作する場合に便利です。 たとえば、変数メソッド ハンドル Mに対するinvokeExact呼び出しをエミュレートするには、その型Tを抽出し、TX呼び出し側メソッドを検索し、X.invoke(T, A...)として呼び出し側メソッドを呼び出します。 (型Tは不明であるため、X.invokeExactを呼び出すには機能しません)。拡散、収集、またはその他の引数変換が必要な場合は、呼び出し側のXに 1 回適用し、Xの型と互換性がある限り、多くのMメソッド ハンドル値で再利用できます。

<em>(注: 呼び出し側メソッドは、Core Reflection API を介して使用できません。宣言された invokeExact または invoke メソッドで java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke を呼び出そうとすると、 java.lang.UnsupportedOperationException UnsupportedOperationException.)</em>

このメソッドは、反射例外またはセキュリティ例外をスローしません。

Javaドキュメント。

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

適用対象