Gibt es eine Möglichkeit, ein Enum in einen konstanten Ausdruck zu konvertieren? Ich möchte meinen Schalter Betreiber unter den Werten eines Enum wählen, aber ich habe einen Compiler-Fehler „case-Ausdrücke konstante Ausdrücke sein muss“, also versuchte ich es in einer Variablen zu deklarieren:Konstante Ausdrücke aus einem Enum
final int REG = MyEnum.REG.getIndex().intValue();
switch (service.getIndex()) {
case REG:
Aber ich immer noch bekomme den gleichen Fehler. Laut Oracle Dokumentation http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
Ein Kompilierung-Konstante Ausdruck ist ein Ausdruck einen Wert primitiver Typ oder ein String bezeichnet, die nicht abrupt nicht vervollständigt und ist nur die zusammengesetzt mit folgenden:
• Literale von primitiven Typ und Literalen des Typs String
So funktioniert es nicht, weil ich kein Literal verwende. Ich denke, ich muss es als zu erklären:
Aber es wäre viel besser, es mit dem Enum zu verknüpfen. Gibt es eine Möglichkeit, dies zu tun?
EDIT
Stellt sich heraus, ich habe keine endgültige Variable verwenden müssen. Es ist so einfach wie:
switch (service) {
case REG:
Es kam mir nicht in den Sinn, bis ich Andreas Kommentar sah. Danke für deine Antworten.
Ich gehe davon aus, dass 'service.getIndex()' 'kehrt Integer ', oder? Kannst du es so modifizieren, dass es dein enum zurückgibt? –
Bis Java 1.6 können Sie 'String' nicht in' switch-case' verwenden, aber Sie können es in Java 7 verwenden. FYI – Joshi