为什么浏览java.lang.Enum源代码时看不到values
方法?我正在使用Intellij 2017.1.1和JDK 1.8.0_131
此外,为什么使用此方法static
?我本来希望是一个实例方法。
答案 0 :(得分:5)
您看不到它,因为它不是在Enum
类上定义的,而是在Enum
的特定子类(即您的enum
的类)上定义的。
这是因为静态方法不是多态的:子类上的values
方法不会覆盖超类中的方法,而是将其隐藏。
您可以反射性地获取类的枚举常量:
YourEnum.class.getEnumConstants()