Dies ist die Fähigkeit, zu vergleichen, um gegen verschiedene Aufzählungstypen zu vermeiden. Es ist sinnvoll, es auf
einen Typ zu beschränken, d. H. Den Typ des Enum-Werts in der
switch
-Anweisung.
Update: Es ist eigentlich binäre Kompatibilität zu halten. Hier ist eine von etwa auf halber Strecke chapter 13.4.9 von JLS zu zitieren:
Ein Grund für die Forderung inlining von Konstanten ist, dass switch
Aussagen erfordern Konstanten auf jeder case
, und keine zwei solche konstante Werte können gleich sein. Der Compiler sucht zur Kompilierungszeit in einer switch
Anweisung nach doppelten Konstantenwerten. Das class
Dateiformat führt keine symbolische Verknüpfung von Groß- und Kleinschreibung durch.
Mit anderen Worten, da der Klassenkennung in EnumType.ENUM1
, kann sie nicht als compiletime konstanten Ausdruck dargestellt werden, während sie von der switch
Anweisung erforderlich ist.
Would „java hat Mängel und versuche nicht wirklich, dieses zu verstehen "sei eine vernünftige Antwort? Ich meine, die Antworten hier sind großartig und detailliert, aber in diesem Fall denke ich, dass es nicht wirklich wichtig ist. +1 Frage, -1 JAVA ... –
@ColinD hat [die korrekte Erklärung] (http://stackoverflow.com/a/2664040/506879) von Ihrem Fall. Um ein wenig im Detail die Lösung für dieses Qualifier Thema auf Enums (mit funktionierenden Beispiel) zu sehen, lesen Sie bitte [diesen Beitrag] (http://www.davestone.net/blog/post/The-enum-constant-reference-cannot -be-qualified-in-a-case-label.aspx) – rekaszeru