java - 枚举类型中的方法可以更改枚举实例的状态吗?

标签 java enums

如果 Enums 是摆脱编译时常量的答案,为什么语言设计者提供了允许任意方法和字段并在 Enums 上实现任意接口(interface)的工具?这些方法永远不能改变 Enum 实例的状态,或者它们可以吗?如果他们被允许改变状态,那么枚举类型的不变性,即导出一些常量的某种类型将破坏恕我直言。

最佳答案

Java 枚举实际上只是经过编译器和运行时一些特殊处理的类。所以是的,对枚举实例的方法调用肯定会改变它的状态。我不确定你的意思是“然后枚举类型的不变量,即导出一些常量的某种类型将会中断”。

谁说枚举只能是一堆常量?枚举类型的本质是你有一个预定义的固定数量的实例,你可以通过名称来引用它们——而 Java 枚举实现了这一点。但是为什么不允许一种语言拥有比这更强大的枚举呢?

如果您不想要额外的功能,没有人会强制您使用它。您可以使用没有字段或方法的 Java 枚举,它们的行为与 C 枚举非常相似。

关于java - 枚举类型中的方法可以更改枚举实例的状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774327/

相关文章:

enums - 使用 @XmlEnumValue 映射 JAX-RS 枚举

java - Java 中的线程安全访问枚举

java - 如何使用 Jackson 和默认类型对 EnumMap 进行(反)序列化?

java - Retrofit2正在解析json里面的json

java - GWT + GAE Servlet URL 和 Servlet 映射

java - OpenCV - Java - 如何删除集群周围的一些像素

java - 刷新 Java 项目的代码

Swift - 具有可交换性的模式匹配

c++ - 将枚举值映射到 C++ 中的字符串

java - 如何让JButton点击后不被选中?