Estou estudando pelo livro de Kathy para tirar a SCJP.
Vendo esse cídogo fiquei meio atrapalhado.
enum Animals {
DOG("Woof"), CAT("Meow"), FISH("Burble");
String sound;
Animals(String s) {
sound = s;
}
}
class TestEnum{
static Animals a = Animals.DOG;
public static void main(String[] args) {
System.out.println(a.DOG.sound +" " +a.FISH.sound);
}
}
Ele dá como saída: Woof Burble
A minha dúvida é a seguinte:
A varíavel de classe a do tipo Animals não deveria ter sido inicializada??
E mais, ele não deveria conter somente uma constante do enum, pelo que vi ela tem todo o enum, por ela eu obtenho todas as constantes do enum.
Normalmente quando uso um enum faço mais ou menos assim:
public class Teste{
public static enum EnumTeste{TESTE1, TESTE2, TESTE3};
public static void metodoTeste(EnumTeste enumTeste){
if (enumTeste == EnumTeste.TESTE1){
System.out.println("TESTE1");
} else if (enumTeste == EnumTeste.TESTE2){
System.out.println("TESTE2");;
} else if (enumTeste == EnumTeste.TESTE3){
System.out.println("TESTE3");
} else {
System.out.println("NENHUM DELES");
}
}
public static void main(String[] args){
metodoTeste(EnumTeste.TESTE1);
}
}
Ele imprime justamente TESTE1, porque ao escrever o seguinte código, eu consigo acessar as demais constantes do enum??? A variável enumTest não deveria ser somente uma EnumTeste.TESTE1 n???
enumTeste.TESTE2;
enumTeste.TESTE3;
Não esperava que o código acima compilasse. Alguem sabe me explicar o porquê de tudo isso? =P
