Czy istnieje sposób zamiany wyliczenia na wyrażenie stałe? chcę mój operator przełącznik wyboru spośród wartości wyliczenia, ale mam błąd kompilacji „wyrażenia przypadek musi być stała wyrażeń”, więc starałem się zadeklarować ją w zmiennej:Wyrażenia stałe z Enum
final int REG = MyEnum.REG.getIndex().intValue();
switch (service.getIndex()) {
case REG:
ale nadal pojawia się ten sam błąd. Według dokumentacji Oracle http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
kompilacji czasu stała ekspresja jest wyrazem oznaczającym wartość prymitywnego typu lub ciąg znaków, który nie kończy się nagle i jest składa się przy użyciu wyłącznie:
• literale typu pierwotnego i literałów typu String
Nie działa, ponieważ nie używam literału. Myślę, że będę musiał zadeklarować to jako:
final int REG = 8;
Ale byłoby znacznie lepiej połączyć to z wyliczeniem. Czy jest jakiś sposób na zrobienie tego?
EDIT
Okazuje się, że nie trzeba używać żadnej zmiennej końcowego. To jest tak proste, jak:
switch (service) {
case REG:
Nie przyszło mi to do głowy, dopóki nie zobaczyłem komentarza Andrei. Dziękuję za odpowiedzi.
Zakładam, że 'service.getIndex()' 'Integer powroty ', prawda? Czy możesz zmodyfikować to tak, aby zwracało twoje wyliczenie? –
Do wersji 1.6 nie można używać 'String' w' switch-case', ale można go używać w Javie 7. FYI – Joshi