Java: acesso às constantes em uma enumeração (enum)
Ao ler o livro da SCJP, encontrei algo assim no capítulo 1 "autoteste":
enum Animals {
DOG("woof"), CAT("meow"), FISH("burble");
String sound;
Animals(String s) { sound = s; }
}
class TestEnum {
static Animals a;
public static void main(String[] args) {
System.out.println(a.DOG.sound + " " + a.FISH.sound);
// the following line is from me
System.out.println(Animals.DOG.sound + " " + Animals.FISH.sound);
}
}
Nota: o código compila bem. O que eu não entendo é por que podemos acessar as constantes DOG, CAT ou FISH a partir da variávela
. Eu pensei (e também está escrito no livro) que as constantes CÃO, PEIXE e CAT são implementadas de maneira semelhante àpublic static final Animals DOG = new Animals(1);
Então, se eles realmente são estáticos, por que podemos acessá-los a partir dea
? A última linha é a maneira como estou familiarizado.