прочитав книгу SCJP, я нашел что-то подобное в главе 1 "Самодиагностика":
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);
}
}
Примечание: код компилируется отлично.
Я не понимаю, почему мы можем получить доступ к константам DOG, CAT или FISH из переменной a
. Я думал (и это также написано в книге), что константы DOG, FISH, CAT выполняются так же, как public static final Animals DOG = new Animals(1);
Так что, если они действительно статичны, почему мы можем получить к ним доступ из a
?
Последняя строка - это то, с чем я знаком.