Java:枚举 values() 和 valueOf(String)

标签 java enums

为什么 javac 向定义的枚举类型添加 values()valueOf(String) 方法?将它们添加到 Enum 类本身不是更好吗?

我的意思是,如果我有一些枚举,例如

enum FooEnum {ONE, TWO}

javac 在编译时将 values()valueOf(String) 添加到 FooEnum 中。我觉得有点奇怪。这背后的原因是什么?

只是为了保证返回值的类型安全,还是还有别的?如果仅是为了类型安全,泛型难道没有帮助吗?

最佳答案

它们是静态方法 - 如何将它们添加到 Enum 中?静态方法不是多态的。此外,在您提议的方案中,Enum 中的实现会是什么样子? Enum 本身不知道值 - 只有具体类型知道。

关于Java:枚举 values() 和 valueOf(String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12703876/

相关文章:

java - 检查 Realm 对象是否有任何变化

swift - 像在 Java 中一样在 Swift 2 中编写一个简单的枚举

enums - Swift 中 Objective-C typedef 枚举的相等性

java - 为什么 List<SuperClassType> newList = new ArrayList<SubClassType>() 违反类型安全?

java - hibernate 过滤器不适用于子选择查询

java - 将 JFrame 中的现有 JPanel 替换为另一个 JPanel 的正确方法是什么?

c++ - 创建一个结构体作为枚举类成员

c# - 确定枚举标志组合中包含的标志数量的最佳做法?

java - Swagger OpenApi/看不到我的枚举属性

java - 如何使用 Docx4J 为 pdf 输出设置字体