【发布时间】:2011-07-09 13:28:03
【问题描述】:
阅读 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);
}
}
注意:代码编译正常。
我不明白为什么我们可以从变量a 中访问 DOG、CAT 或 FISH 常量。我认为(并且它也写在书中)作为常量的 DOG、FISH、CAT 以类似于public static final Animals DOG = new Animals(1); 的方式实现
因此,如果它们真的是静态的,为什么我们可以从 a 访问它们?
最后一行是我熟悉的方式。
【问题讨论】: