Pessoal…
Brincando um pouco com o enum e switch quando codificava, me deparei com o seguinte erro, que não entendi o que exatamente ocorre.
enum a {A,B,C}
public class TesteEnumSwitch {
public static void main(String[] args) {
Teste teste = new Teste();
a teste2 = a.B;
switch (teste.atrEnum) {
case A:
break;
case B:
break;
case C:
break;
default:
break;
}
}
}
class Teste{
a atrEnum = a.B;
}
Neste código acima, a classe compila sem nenhum problema, tudo OK… No entanto, quando eu altero as constantes de case, como no exemplo abaixo, ocorre o erro.
enum a {A,B,C}
public class TesteEnumSwitch {
public static void main(String[] args) {
Teste teste = new Teste();
a teste2 = a.B;
switch (teste.atrEnum) {
case a.A:
break;
case a.B:
break;
case a.C:
break;
default:
break;
}
}
}
class Teste{
a atrEnum = a.B;
}
[color=red]The enum constant a.A reference cannot be qualified in a case label[/color]
Esse erro tem alguma coisa com a regra de que o case deve conhecer o valor da variável em tempo de compilação ou é outra regra que está criando este erro?
Valeu pessoal! 