Java 6枚举类型的values()方法是如何实现的?
- 论坛
- Java 6枚举类型的values()方法是如何实现的?
21 浏览
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()返回一个新实例。