Enum.values() 在哪里定义的?
每个Java枚举都有一个静态values()方法,可以像这样使用
for (MyEnum enum : MyEnum.values()) {
// Do something with enum
}
但是,我不知道这个方法是在哪里定义的。 Javadoc 中没有提及它它不会出现在源文件中的任何位置。
Every Java enumeration has a static values() method can be used like this
for (MyEnum enum : MyEnum.values()) {
// Do something with enum
}
However, I cannot figure out where this method is defined. There's no mention of it in the Javadoc and it doesn't appear anywhere in the source file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是 Java 语言规范 所要求的:
values
和valueOf
将为所有 Enum 隐式声明:这些方法是在编译时添加的,因此如果您使用
javap
反汇编代码,你实际上可以看看他们的身体。This is required by the Java Language Specification:
values
andvalueOf
will be implicitly declared for all Enums:These methods are added during compile time, so if you use
javap
to disassemble the code, you can actually look at their body.它在 JLS 中定义,第 8.9.3 节“枚举成员”
It's defined in the JLS, section 8.9.3 "Enum Members"
它没有明确定义,就像java数组的
length
属性没有定义一样。它隐式地可用于具体的 Enum 类型。It's not explicitly defined, just like
length
property of java array is not defined. It is implicitly available for concrete Enum type.