为什么 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/