如何为 Java 6 枚举实现 values()?
在 Java 中,您可以按如下方式创建枚举:
public enum Letter {
A, B, C, D, E, F, G;
static {
for(Letter letter : values()) {
// do something with letter
}
}
}
这个问题涉及“values()”方法。具体来说,它是如何实现的?通常,我可以在 Eclipse 中使用 F3 或 Ctrl+Click 跳转到 Java 类的源代码(即使对于字符串、字符、整数甚至枚举等类也是如此)。可以查看其他枚举方法的源(例如,valueOf(String))。
“values()”是否在每次调用时都会创建一个新数组?如果我将其分配给局部变量,然后修改其中一个元素,会发生什么(显然这不会影响 values() 返回的值),这意味着每次都分配一个新数组)。
它的代码是原生的吗?或者JVM /编译器是否特别对待它,仅在无法证明它不会被修改时才从values()返回新实例。