Gültigkeitsbereich der Variablen in einem Schaltergehäuse [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Deklarieren und Initialisieren von Variablen in Java-Switches 5 Antworten

Ich glaube, ich verstehe nicht, wie das Zielfernrohr in einem Schaltergehäuse funktioniert.

Kann mir jemand erklären, warum der erste Code nicht kompiliert wird, der zweite?

Code 1:

 int key = 2;
 switch (key) {
 case 1:
      String str = "1";
      return str;
 case 2:
      String str = "2"; // duplicate declaration of "str" according to Eclipse.
      return str;
 }

Code 2:

 int key = 2;
 if (key == 1) {
      String str = "1";
      return str;
 } else if (key == 2) {
      String str = "2";
      return str;
 }

Wie kommt es, dass der Gültigkeitsbereich der Variablen "str" nicht in Fall 1 enthalten ist?

Wenn ich die Deklaration von Fall 1 überspringe, wird die Variable "str" niemals deklariert ...

Antworten auf die Frage(14)

Ihre Antwort auf die Frage