作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在查看一些由公司其他部门维护的 Java 代码,顺便提一下,一些前 C 和 C++ 开发人员。普遍存在的一件事是使用静态整数常量,例如
class Engine {
private static int ENGINE_IDLE = 0;
private static int ENGINE_COLLECTING = 1;
...
}
除了缺少“final”限定符之外,我对这种代码有点困扰。我希望看到,在学校主要接受 Java 培训,会更像
class Engine {
private enum State { Idle, Collecting };
...
}
但是,我的论点失败了。为什么,如果有的话,后者比前者更好?
最佳答案
Why, if at all, is the latter better than the former?
这要好得多,因为它为您提供了类型安全性并且是自记录的。对于整数常量,您必须查看 API 文档以找出哪些值是有效的,并且没有什么可以阻止您使用无效值(或者更糟糕的是,完全不相关的整数常量)。使用 Enums,方法签名会直接告诉您哪些值是有效的(IDE 自动完成将起作用)并且不可能使用无效值。
不幸的是,“整数常量枚举”模式非常普遍,即使在 Java 标准 API(并从那里广泛复制)中也是如此,因为 Java 在 Java 5 之前没有枚举。
关于Java 枚举与静态常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2229297/
我是一名优秀的程序员,十分优秀!