Gemäß Wikipedia ist die leere letzte Variable eine letzte Variable, deren Deklaration zum Zeitpunkt der Definition einen Initialisierer fehlt.Switch-Anweisung mit leeren endgültigen Variablen
Gleichzeitig müssen die Werte für die Switch-Case-Anweisung konstante Werte für die Kompilierungszeit sein.
Gemäß über zwei Bestätigungen, würde ich beide der folgenden Code-Schnipsel erwarten ohne Probleme zu kompilieren, aber nur der erste tut:
final int y = 1;
switch(1) {
case y:
}
und
final int y;
y = 1;
switch(1) {
case y:
}
Sollte nicht haben Java-Compiler führen eine Flussanalyse im zweiten Beispiel durch, um sicherzustellen, dass eine leere finale Variable zugewiesen wird und der Code somit fehlerfrei kompiliert wird?
Check diese Antwort https://stackoverflow.com/questions/3827393/java-switch-statement-constant-expression-required-but-it-is-constant#3827424 tatsächlich, scheint wie Duplikat dieser Frage –