2011-01-31 8 views
5

W przypadku przełącznika zauważyłem, że gdy próbuję użyć parametru jako stałej sprawy, pojawia się błąd kompilacji. Ale mogę używać pól/lokalnych zmiennych.W języku Java, czy możliwe jest użycie parametru method/constructor jako instrukcji switch, stała case?

Czy naprawdę nie można użyć parametru jako stałej przypadku? Czy są wyjątki (jeśli tak, proszę podać przykład)?

Przykład:

final int field = 0; 
void method(final int parameter) { 
    switch(3) { 
     case field: // ALLOWED 
     case parameter; // NOT ALLOWED 
    } 
} 

Próbuję użyć parametru bezpośrednio. Nie interesują mnie rozwiązania, które zapisują wartość parametru w lokalnym var.

Odpowiedz

3

Podobnie jak C i C++, Java pozwala tylko kompilacji stałe jako wartość case.

Wartość zainicjalizowanafinal członków klasy może zostać ustalona podczas kompilacji i nie może się zmienić. final parametry metody mogą mieć inną wartość dla każdego wywołania metody.

Aby porównać z parametrami metody, prawdopodobnie trzeba przywrócić starą wersję: if...else....

EDIT:

Przy okazji należy zwrócić uwagę na nacisk na zainicjowane powyżej. Element klasy final bez inicjalizatora na deklaracji nie może być również użyty jako wartość case.

2

Java może używać tylko stałe w case części

Powiązane problemy