Java - Problema con la variable final

 
Vista:

Problema con la variable final

Publicado por gustavog (1 intervención) el 20/04/2007 20:43:45
Hola a todos .
Les paso una consulta de Java a ver si alguien sabe de por que se da este error .

El tema es asi: Tengo los sgtes. dos casos que no están relacionados...son dos pruebas distintas que hice en momentos distintos.

1) public test(){
int a=4;
final int c=3;
switch(a)
{ case c: .....
......
}
}

2) public test(){
int a=4;
final int c;
c=3;
switch(a)
{ case c: .........
...................
}
}

En el caso 1) funciona todo bien, no hay error de compilación. En el caso 2) el parser y luego el compilador me da un error de "constant expression required". En definitiva me está pidiendo un valor que se resuelva (el de la variable "c") en tiempo de compilación. Entónces mi duda es...la variable "c" es final con lo cual no se puede cambiar el valor una vez que está inicializada. Por otro lado estoy corriendo el código en un método local por lo que las variables locales no se inicializan automáticamente. Pero lo raro es que todos esos casos los estoy cumpliendo y aun así no anda. Será porque hay una diferencia entre la creación e inicialización en la misma línea (caso 1)) y lineas separadas (caso 2)) ?

Si alguien sabe del por que se da esto barbaro !!!
Muchas gracias .
Saludos .
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con la variable final

Publicado por govisagod512 (5 intervenciones) el 20/04/2007 21:22:51
No tiene sentido usar la palabra final (al igual que public, protected o private) dentro de un método. Si tienes que declarar una constante para un método puedes declararla así:

public class...{
...
private static final int C=3;
...
}

o así:

public class...{
...
private static final int C;
...
static{
C=3;
}
...
}

No estoy seguro, te estoy escribiendo de cabeza, pero creo que te funcionará. También puedes inicializarla cada vez que llamas al método y no cambiarla.

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar