读取SCJP的书,我发现这样的事情在第1章“自检”:的Java:访问常量枚举(ENUM)
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
访问它们? 最后一行是我熟悉的方式。
'a.DOG'与动物狗不同,'a'一定不能为空。 – bestsss 2011-03-05 21:05:27
@bestsss枚举值是静态的,所以它不依赖于a的值,运行它与一个== null工作得很好。 – josefx 2011-03-05 21:36:41