作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果 Enums 是摆脱编译时常量的答案,为什么语言设计者提供了允许任意方法和字段并在 Enums 上实现任意接口(interface)的工具?这些方法永远不能改变 Enum 实例的状态,或者它们可以吗?如果他们被允许改变状态,那么枚举类型的不变性,即导出一些常量的某种类型将破坏恕我直言。
最佳答案
Java 枚举实际上只是经过编译器和运行时一些特殊处理的类。所以是的,对枚举实例的方法调用肯定会改变它的状态。我不确定你的意思是“然后枚举类型的不变量,即导出一些常量的某种类型将会中断”。
谁说枚举只能是一堆常量?枚举类型的本质是你有一个预定义的固定数量的实例,你可以通过名称来引用它们——而 Java 枚举实现了这一点。但是为什么不允许一种语言拥有比这更强大的枚举呢?
如果您不想要额外的功能,没有人会强制您使用它。您可以使用没有字段或方法的 Java 枚举,它们的行为与 C 枚举非常相似。
关于java - 枚举类型中的方法可以更改枚举实例的状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774327/
我是一名优秀的程序员,十分优秀!