2011-01-31 18 views
5

En una caja de interruptor, me he dado cuenta de que cuando trato de usar un parámetro como constante de caso, aparece un error de compilación. Pero puedo usar campos/vars locales.En Java, ¿es posible usar el parámetro de un método/constructor como una instrucción switch, constante de caso?

¿Es realmente imposible usar un parámetro como constante de caso? ¿O hay excepciones (si es así, por favor proporcione un ejemplo)?

Ejemplo:

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

Estoy tratando de utilizar el parámetro directamente. No estoy interesado en soluciones que guarden el valor del parámetro en una var.

Respuesta

3

Al igual que C y C++, Java sólo permite tiempo de compilación constantes como un valor para case.

El valor de inicializadofinal los miembros de la clase se pueden determinar en tiempo de compilación y no se pueden cambiar. Los parámetros del método final pueden tener un valor diferente en cada llamada a método.

Para comparar con los parámetros del método, es probable que tenga que recurrir al viejo if...else....

EDIT:

Por cierto, nótese el énfasis en inicializa anteriormente. Un miembro de clase final sin un inicializador en la declaración tampoco se puede usar como un valor case.

2

Java pueden utilizar únicas constantes en la parte case

Cuestiones relacionadas