Duvida Switch

2 respostas
muehlner

Na leitura do livro da Kathy Sierra apareceu o seguinte codigo

final int a = 1;

final int b;

b = 2;

int x = 0;

switch (x){

     case a: // ok

     case b: // erro de compilação
 
}

[i]Alguém poderia explicar por favor por que esse tipo de erro acontece, não entendi se tem haver com o fato a variável ser final ou estar acessado
duas variáveis diferentes no mesmo Switch

Em fim

Esse código esta na Pag 193 do Livro

Muito Obrigado[/i]

2 Respostas

jhaga

muehlner:

...
final int b;
b = 2;
...
switch (x){
...     case b: // erro de compilação
}

[i]…não entendi se tem haver com o fato a variável ser final…

Não tem problema o switch estar acessando ‘n’ variáveis. O que importa é que está usando um atributo “b” que não teve declarado seu valor, ou seja, ele espera uma constante e não algo que seja “alterável”.

al.barbosa

Isso, concordo com o jhaga que não tem problema o switch estar acessando ‘n’ variáveis.

Tem um outro tópico que discute sobre este assunto:

http://www.guj.com.br/java/248416-switch-e-constantes

Entendi que basicamente a diferença é que a variável a é uma constante de tempo de compilação (compile time constant), porque o compilador já sabe o seu valor ao compilar. A variável b é também uma constante, mas não é considerada uma constante de tempo de compilação. O switch só aceita constantes de tempo de compilação.

Criado 1 de agosto de 2012
Ultima resposta 1 de ago. de 2012
Respostas 2
Participantes 3