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 .
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


0