語言

SwitchBootstraps.EnumSwitch 方法

定義

Bootstrap 方法用於連結一個實作在 enum 類型的目標上交換器的 invokedynamic 呼叫站點。

[Android.Runtime.Register("enumSwitch", "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;", "", ApiSince=36)]
public static Java.Lang.Invoke.CallSite? EnumSwitch(Java.Lang.Invoke.MethodHandles.Lookup? lookup, string? invocationName, Java.Lang.Invoke.MethodType? invocationType, params Java.Lang.Object[]? labels);
[<Android.Runtime.Register("enumSwitch", "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;", "", ApiSince=36)>]
static member EnumSwitch : Java.Lang.Invoke.MethodHandles.Lookup * string * Java.Lang.Invoke.MethodType * Java.Lang.Object[] -> Java.Lang.Invoke.CallSite

參數

lookup
MethodHandles.Lookup

代表一個查詢上下文,並擁有呼叫者的無障礙權限。 當與 invokedynamic 一起使用時,虛擬機會自動堆疊這個功能。

invocationName
String

unused

invocationType
MethodType

CallSite 的呼叫類型有兩個參數,分別為列舉型別、一個整數,以及作為回傳型別的整數。

labels
Object[]

case labels - 字串常數與類別實例,任意組合

傳回

一個 CallSite,回傳上述第一個匹配元素

屬性

例外狀況

元素為;不接受列舉與 int ,回傳 ;int或標籤既非 A String 也非 aClass,目標列舉類型。 invocationTypenulllabels

一個參數為 null。

備註

Bootstrap 方法用於連結一個實作在 enum 類型的目標上交換器的 invokedynamic 呼叫站點。 靜態參數用於編碼與交換結構相關的案例標籤,每個標籤可用兩種方式編碼:以字串值形式編碼,代表與標籤相關的列舉常數名稱為類值,代表與型別測試模式相關的列舉型別。回傳的 CallSite 方法代碼會採用 int 的回傳型別,並接受兩個參數: 第一個參數為 Enum 實例(目標),第二個為整數(restart)。 若目標為空,則呼叫站點的方法回傳 -1。 如果目標不是空,呼叫站點的方法會回傳標籤陣列中第一個元素的索引,從重新啟動索引開始,符合以下條件之一:元素的類型是 Class,可從目標類別指派;或元素型別為 String,且等於目標列舉常數的 Enum.name()。 如果標籤陣列中沒有任何元素與目標相符,呼叫站的方法會回傳標籤陣列的長度。 重新啟動索引的值必須介於 0(包含)與標籤陣列長度(包含)之間,兩者皆為,否則會拋出 IndexOutOfBoundsException。

Java 文件 java.lang.runtime.SwitchBootstraps.enumSwitch。

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

適用於