10
Switch Anweisung
Sebastian Eidecker edited this page 2019-11-18 19:52:05 +00:00

Syntax switch-Anweisung

switch (ausdruck) {
    case constant:
        anweisungen;
        (break;)
        
    default:
        anweisungen;
}
  • ausdruck muss Typ enum, byte, short, int, char oder String ergeben. long, double, float, boolean sind nicht erlaubt (Wrapper gehen auch). Der Ausdruck muss nicht konstant sein, kann z.B. durch eine Funktion ermittelt werden.
  • Case-Ausdrücke müssen Compile-Zeit-Konstanten sein.
    • Keine nicht-finalen Variablen
    • Keine Methodenaufrufe, auch nicht, wenn immutable.
    • Strings sind erlaubt
    • null nicht erlaubt
  • Es werden alle Case-Blöcke ab dem ersten passenden durchlaufen, bis ein break abbricht. Auch der default-Block, wenn schon gematcht war!
  • Der default-Block wird nur gewählt, wenn kein passendes case vorhanden ist.
  • Der default-Block darf überall stehen und wird genauso behandelt wie alle anderen Blöcke. Ohne break geht es weiter. Mit break ist Schluss.
  • Es dürfen keine zwei gleichen case-Konstanten vorhanden sein, auch nicht zwei default-Blöcke.
  • Leere switch-Anweisungen sind erlaubt
  • Anweisungen außerhalb der case- und default-Blöcke sind verboten.
  • Alle case-Blöcke sind in einem Scope. Variablen sind demnach definiert, aber nicht zwingend initialisiert.
  • Scoping durch neue Blöcke innerhalb der case-Anweisungen ist erlaubt. Um case-Blöcke herum jedoch nicht!
  • case kann komplett fehlen, switch muss aber Klammern haben, leere Anweisung mit ; geht nicht.