关于枚举的java:values()

values() of a Enum

本问题已经有最佳答案,请猛点这里访问。

为什么浏览java.lang.Enum源代码时看不到values方法? 我正在使用Intellij 2017.1.1和JDK 1.8.0_131

另外,为什么此方法static? 我本来希望是一个实例方法。


您看不到它,因为它不是在Enum类上定义的,而是在Enum的特定子类上定义的(即您的Enum的类)。

这是因为静态方法不是多态的:子类上的values方法不会覆盖超类中的方法,而是将其隐藏。

您可以反射性地获取类的枚举常量:

1
YourEnum.class.getEnumConstants()