枚举的values()

时间:2018-08-05 08:45:19

标签: java enums

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

YourEnum.class.getEnumConstants()