Java 6枚举类型的values()方法是如何实现的?

21 浏览
0 Comments

Java 6枚举类型的values()方法是如何实现的?

在Java中,你可以按照以下方式创建一个枚举:

public enum Letter {
    A, B, C, D, E, F, G;
    static {
       for(Letter letter : values()) {
          // 对letter做一些操作
       }
    }
}

这个问题涉及到"values()"方法。具体来说,它是如何实现的?通常情况下,我可以使用Eclipse中的F3或CTRL+单击来跳转到Java类的源代码(即使是像String、Character、Integer和Enum这样的类)。可以查看其他枚举方法(例如valueOf(String))的源代码。

"values()"每次被调用时,是否会创建一个新数组?如果我将其赋值给一个局部变量,然后修改其中一个元素,会发生什么(显然这不会影响values()返回的值,这意味着每次都会分配一个新的数组)。

它的代码是本地代码吗?还是JVM / 编译器将其特殊处理,只有在无法证明它不会被修改时才从values()返回一个新实例。

0