читая книгу 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);
}
}
Примечание: код компилируется нормально. в главе 1 «Самопроверка» мы нашли что-то вроде этого: enum Animals {DOG («гав»), CAT («мяу»), FISH («бормотание»); Струнный звук; Животные (String s) {sound = s; } ...
читая книгу 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);
}
}
Примечание: код компилируется нормально. в главе 1 «Самопроверка» мы нашли что-то вроде этого: enum Animals {DOG («гав»), CAT («мяу»), FISH («бормотание»); Струнный звук; Животные (String s) {sound = s; } ...
читая книгу 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
?
Последняя строка мне знакома.