語言

MethodHandles.ExactInvoker(MethodType) 方法

定義

產生一個特殊的 <em>invoker 方法 handle</em>,可用來呼叫任何特定類型的方法 handle ,就像 。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 方法 handle</em>,可用來呼叫任何特定類型的方法 handle ,就像 。MethodHandle#invokeExact invokeExact 所得的調用器會有一個恰好等於所需型別的型別,但會接受一個型別 MethodHandle為 的額外導引參數。

此方法等同於以下程式碼(雖然可能更有效率): publicLookup().findVirtual(MethodHandle.class, "invokeExact", type)

<em>討論:</em> 呼叫器方法的句柄在處理未知型別的變數方法柄時非常有用。 例如,要模擬invokeExact對變數方法handle 的M呼叫,擷取其型別T,查詢 的T調用者方法X,並呼叫調用者方法,作為 X.invoke(T, A...)。 (由於類型未知,無法呼叫 X.invokeExact。T)若需要展開、收集或其他參數轉換,只要與 的X類型相容,即可對調用者X套用一次,並在多個M方法的 handle 值上重複使用。

<em>(注意:調用者方法無法透過核心反射 API 提供。嘗試呼叫 java.lang.reflect.Method#invoke java.lang.reflect.Method.invoke 在宣告的 invokeExact 或 invoke 方法上會產生一個 java.lang.UnsupportedOperationException UnsupportedOperationException.)</em>

此方法不會拋出反射性或安全例外。

Java 文件 java.lang.invoke.MethodHandles.exactInvoker(java.lang.invoke.MethodType)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於