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

Gee*_*eek 3 java enums language-design

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

Lou*_*man 9

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