Sprache

SwitchBootstraps.EnumSwitch Methode

Definition

Bootstrap-Methode zum Verknüpfen einer aufrufdynamischen Aufrufwebsite, die einen Switch auf einem Ziel eines Enumerationstyps implementiert.

[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

Parameter

lookup
MethodHandles.Lookup

Stellt einen Nachschlagekontext mit den Barrierefreiheitsberechtigungen des Aufrufers dar. Bei Verwendung mit invokedynamic wird dies automatisch von der VM gestapelt.

invocationName
String

unused

invocationType
MethodType

Der Aufruftyp der CallSite mit zwei Parametern, einem Enumerationstyp, einem Int und int als Rückgabetyp.

labels
Object[]

Groß-/Kleinschreibungsbezeichnungen – Zeichenfolgenkonstanten und Klasseninstanzen in beliebiger Kombination

Gibt zurück

eine CallSite, die das erste übereinstimmende Element zurückgibt, wie oben beschrieben

Attribute

Ausnahmen

Ein Element von labels ist null; invocationType akzeptiert keine Enumeration und eine und gibt ein intint; oder eine Bezeichnung ist weder ein noch ein StringClass für den Zielenumstyp.

Ein Argument ist null.

Hinweise

Bootstrap-Methode zum Verknüpfen einer aufrufdynamischen Aufrufwebsite, die einen Switch auf einem Ziel eines Enumerationstyps implementiert. Die statischen Argumente werden verwendet, um die Fallbeschriftungen zu codieren, die dem Switch-Konstrukt zugeordnet sind, wobei jede Bezeichnung auf zwei Arten codiert werden kann: als Zeichenfolgenwert, der den Namen der Enumerationskonstante darstellt, die der Bezeichnung als Klassenwert zugeordnet ist, der den Enumerationstyp darstellt, der einem Typtestmuster zugeordnet ist. Der zurückgegebene Methodenhandle von CallSite hat einen Rückgabetyp von int und akzeptiert zwei Parameter: Das erste Argument ist eine Enumerationsinstanz ( Ziel ) und die zweite wird int ( neustart ). Wenn das Ziel null ist, gibt die Methode der Aufrufwebsite -1 zurück. Wenn das Ziel nicht NULL ist, gibt die Methode der Aufrufwebsite den Index des ersten Elements im Bezeichnungsarray ab dem Neustartindex zurück, der einer der folgenden Bedingungen entspricht: das Element ist vom Typ "Class", der von der Klasse des Ziels zugewiesen werden kann; oder das Element ist vom Typ String und entspricht der Enum.name() der Zielenumskonstante. Wenn kein Element im Beschriftungsarray mit dem Ziel übereinstimmt, gibt die Methode der Aufrufwebsite die Länge des Beschriftungsarrays zurück. Der Wert des Neustartindex muss zwischen 0 (einschließlich) und der Länge des Bezeichnungsarrays (einschließlich) liegen, oder es wird eine IndexOutOfBoundsException ausgelöst.

Java Dokumentation für java.lang.runtime.SwitchBootstraps.enumSwitch.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: