【发布时间】:2010-10-06 19:36:14
【问题描述】:
我正在查看文档和源代码,因为我想确定 values() 将始终按照 Enum 值的声明顺序返回一个数组。结果,据我所知,它不是in the documentation。
我检查了 Enum 类的源代码,但没有运气 (there is a related, private "getValues" method)。
所以我猜测某些编译器/解释器 foo 已经在创建一个类,该类将 Enum 从如下声明中扩展出来:
public static enum MyEnum
那么 values() 在编译期间是否也静态转换为硬编码数组?或者它实际上是在运行时调用的方法,如果是,它定义在哪里?
【问题讨论】:
-
如果你这么在意,这可能意味着如果在你的枚举声明中移动东西,某些东西会中断。那真的很脆弱。所以我想说,如果你在乎,你可能有一个奇怪的设计。为什么它们井井有条对你很重要?
-
@Mark Peters - 因为我在多个地方使用枚举来订购菜单项。当然,我可以创建某种排序函数,以某种顺序返回它们……但是为什么呢?如果我移动它们不会中断,它只会改变它们在整个应用中的显示顺序。