SwitchBootstraps.EnumSwitch 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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,回傳上述第一個匹配元素
- 屬性
例外狀況
一個參數為 null。
備註
Bootstrap 方法用於連結一個實作在 enum 類型的目標上交換器的 invokedynamic 呼叫站點。 靜態參數用於編碼與交換結構相關的案例標籤,每個標籤可用兩種方式編碼:以字串值形式編碼,代表與標籤相關的列舉常數名稱為類值,代表與型別測試模式相關的列舉型別。回傳的 CallSite 方法代碼會採用 int 的回傳型別,並接受兩個參數: 第一個參數為 Enum 實例(目標),第二個為整數(restart)。 若目標為空,則呼叫站點的方法回傳 -1。 如果目標不是空,呼叫站點的方法會回傳標籤陣列中第一個元素的索引,從重新啟動索引開始,符合以下條件之一:元素的類型是 Class,可從目標類別指派;或元素型別為 String,且等於目標列舉常數的 Enum.name()。 如果標籤陣列中沒有任何元素與目標相符,呼叫站的方法會回傳標籤陣列的長度。 重新啟動索引的值必須介於 0(包含)與標籤陣列長度(包含)之間,兩者皆為,否則會拋出 IndexOutOfBoundsException。
Java 文件 java.lang.runtime.SwitchBootstraps.enumSwitch。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。