Warum kann ein Enum-Wert in einer switch-Anweisung nicht vollständig qualifiziert werden?

(Anmerkung: bearbeitete Frage; die vorherige Absicht war nicht klar)

Betrachten Sie diesen Code:

public final class Foo
{
    private enum X
    {
        VALUE1, VALUE2
    }

    public static void main(final String... args)
    {
        final X x = X.VALUE1;

        switch (x) {
            case VALUE1:
                System.out.println(1);
                break;
            case VALUE2:
                System.out.println(2);
        }
    }
}

Dieser Code funktioniert gut.

Wenn ich jedoch ersetze:

case VALUE1: // or VALUE2

mit:

case X.VALUE1: // or X.VALUE2

dann beschwert sich der Compiler:

java: /path/to/Foo.java:whatever: Ein Enum-Switch-Case-Label muss der unqualifizierte Name einer Enumeration-Konstante sein

SOschlägt eine Antwort vor mit diesem Zitat aus dem JLS:

(Ein Grund für das Inlining von Konstanten besteht darin, dass switch-Anweisungen jeweils Konstanten erfordern und keine zwei dieser Konstantenwerte identisch sein dürfen. Der Compiler prüft beim Kompilieren, ob in einer switch-Anweisung doppelte Konstantenwerte vorhanden sind, das Klassendateiformat jedoch nicht machen symbolische Verknüpfung von Fallwerten.)

Das befriedigt mich aber nicht. Soweit es mich betrifft,VALUE1 undX.VALUE1 sind genau das gleiche. Der zitierte Text erklärt es mir überhaupt nicht.

Wo in der JLS ist das definiertenum Werte inswitch Aussagen müssen so geschrieben werden?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage