在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类的源代码(即使是像String、Character、Integer甚至Enum这样的类)。是否可以查看其他枚举方法(例如valueOf(String))的源代码。
"values()"每次调用时都会创建一个新的数组吗?如果将其赋值给本地变量,然后修改其中一个元素会发生什么(显然,这不会影响由values()返回的值,这意味着每次都分配一个新的数组)。
它的代码是否为本地代码?还是JVM/编译器特殊处理它,在无法证明它不会被修改时才从values()返回新实例。
values()
方法要将数组$VALUES
进行clone()
操作?直接返回不可以吗? - RestInPeace-XD-printflat
这个东西,它非常有用,可以帮助我们更好地了解内部工作原理。可惜的是,这个东西的文档记录不够完善。感谢让我意识到这一点! - MvG.values()
方法。从你所说的来看,这似乎不是所有枚举类型都共有的方法,而是每个声明的枚举类型中存在的独特方法,并且与任何其他声明的枚举类型中的.values()
方法没有任何共同之处。 - Ryan Lundy