語言

MethodHandles.ExplicitCastArguments(MethodHandle, MethodType) 方法

定義

產生一個方法代柄,透過成對參數與回傳型別轉換,將所給方法的代號型態調整為新型態。

[Android.Runtime.Register("explicitCastArguments", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? ExplicitCastArguments(Java.Lang.Invoke.MethodHandle? target, Java.Lang.Invoke.MethodType? newType);
[<Android.Runtime.Register("explicitCastArguments", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member ExplicitCastArguments : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

參數

target
MethodHandle

在參數重新輸入後呼叫的方法 handle

newType
MethodType

新方法處理的預期型態

傳回

一個方法代柄,在執行必要的參數轉換後,將它委派給目標,並安排必要的回傳值轉換

屬性

備註

產生一個方法代柄,透過成對參數與回傳型別轉換,將所給方法的代號型態調整為新型態。 原始型別與新型別必須擁有相同的參數數。 所得的方法處理件保證會回報與所需新型別相等的型別。

若原始類型與新類型相等,則返回目標。

與 相同的轉換被允許 MethodHandle#asType MethodHandle.asType,若轉換失敗,也會施加一些額外的轉換。 給定類型 em T0/em>、<em>T1</em>,若可能,會先或取代以下其中一種轉換,先或取代由 S asType<進行的轉換: ul><li>若 <em>T0</em><與 em>T1</em> 為參考,且 <em>T1</em> 為介面類型,則 em>T0</em> 的值<會作為 <em>T1</em> 傳遞,無需鑄造。<>< (這種介面處理遵循位元組碼驗證器的使用。)<李>若 <em T0</em> 是布林值,且 <em>T1</em> 是另一個原語,則布林值會轉換成位元組值,1 代表真,>0 表示假。 (此處理遵循位元組碼驗證器的使用。)<李>若 <em T1</em> 是布林值,且 <em>T0</em> 是另一個原語,則 <em>T0</em> 會透過 Java casting 轉換(JLS 5.5)轉換為位元組,並測試結果的低階位元,如同 。(x & 1) != 0> <li>如果 <em>T0</em> 和 <em>T1</em> 是布林以外的原語,則會應用 Java casting 轉換(JLS 5.5)。 (具體來說,<em T0</em> 會透過擴寬和/或縮小轉換成 <em>T1</em>。) <>li 如果 em T0</em> 是參考,em <>T1</em> 是原語,則會在執行時進行開箱轉換,可能接著對原始值進行 Java 鑄造轉換(JLS 5.5),接著可能透過測試低階位元將位元組轉換為布林。><> <li 若 em T0</em> 是參考,em <>T1</em> 是原元,且該參考在執行時為空,則引入零值。><> </ul>

Java 文件 java.lang.invoke.MethodHandles.explicitCastArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType)。

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

適用於