首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对于Java6枚举,values()是如何实现的?

对于Java6枚举,values()是如何实现的?
EN

Stack Overflow用户
提问于 2009-07-22 04:31:58
回答 2查看 18.7K关注 0票数 73

在Java中,您可以创建枚举,如下所示:

代码语言:javascript
复制
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类的源代码(即使是String、Character、Integer甚至Enum这样的类)。可以查看其他枚举方法的源代码(例如,valueOf(String))。

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

它的代码是原生的吗?或者JVM /编译器会特别对待它,只在不能证明不会被修改时才从values()返回一个新实例。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1163076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档