Java Switch-Anweisung: Anforderung an konstante Ausdrücke
Bei Verwendung einer Switch-Anweisung in Java müssen die Groß-/Kleinschreibungsbezeichnungen konstante Ausdrücke sein. Das bedeutet, dass der Ausdruck zur Kompilierzeit bekannt sein muss. Im angegebenen Code:
public static String lookup(int constant) { switch (constant) { case Foo.BAR: return "bar"; case Foo.BAZ: return "baz"; case Foo.BAM: return "bam"; default: return "unknown"; } }
Die Compilerfehler bei den Fallbezeichnungen, da Foo.BAR, Foo.BAZ und Foo.BAM nicht als konstante Ausdrücke betrachtet werden. Obwohl sie innerhalb der Klasse als Konstanten deklariert werden, werden sie nicht mit bestimmten Werten initialisiert. Ein konstanter Ausdruck erfordert einen Wert, der zur Kompilierungszeit ausgewertet werden kann, z. B. ein Literal oder eine endgültige Variable, die mit einer Konstante zur Kompilierungszeit initialisiert wird.
Um dieses Problem zu beheben, können die Foo.BAR-Konstanten mit initialisiert werden Konstantenwerte zur Kompilierungszeit:
public abstract class Foo { public static final int BAR = 1; public static final int BAZ = 2; public static final int BAM = 3; }
Dadurch kann die Switch-Anweisung erfolgreich kompiliert werden, da die Fallbezeichnungen nun als konstant ausgewertet werden Ausdrücke.
Alternativ können die Konstanten stattdessen als Aufzählung deklariert werden, was einen saubereren Code und stärker typisierte Konstanten ermöglicht. Für Aufzählungen gelten jedoch bestimmte Einschränkungen, z. B. die Anforderung einer Standard-Groß-/Kleinschreibung und spezifischer Aufzählungswerte als Groß-/Kleinschreibungsbezeichnungen.
Das obige ist der detaillierte Inhalt vonWarum erfordern Java-Switch-Anweisungen konstante Ausdrücke für Fallbezeichnungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!