为什么Enum中的静态方法values()和valueOf()是由编译器添加的,而不是在Enum类中显式声明的?

时间:2013-03-16 18:01:08

标签: java enums language-design

在阅读Enum的Javadoc时,我可以看到signature of valueOf()不是我通常使用的{{3}}。此外,还缺少值()方法的javadoc。我读到这些方法实际上是由编译器自动生成的。所以我的问题是为什么这些方法在Enum类本身中没有被声明为静态方法?这些方法需要包含在内,就像编译器的方式一样?为什么这个额外的抽象层?

1 个答案:

答案 0 :(得分:9)

这些方法必须在Enum中声明,但在Enum子类中,您正在编写的enum类型。它们不能以任何其他方式添加,尤其是因为静态方法不会继承实例方法的方式。