MethodHandles.ExactInvoker(MethodType) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
產生一個特殊的 <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 所創建與分享的作品,並依授權條款所描述的使用進行修改。