Java枚举与静态常量

我正在查看公司其他部门维护的一些Java代码,顺便说一下,这是一些前C和C ++开发人员所维护的。普遍存在的一件事是使用静态整数常量,例如

class Engine {

private static int ENGINE_IDLE = 0;

private static int ENGINE_COLLECTING = 1;

...

}

除了缺少“最终”限定符外,这种代码也让我有些不安。我本来希望看到的是,从学校开始主要接受Java的培训,这会更像

class Engine {

private enum State { Idle, Collecting };

...

}

但是,论点使我失望。为什么要比后者更好呢?

回答:

为什么要比后者更好呢?

这样做要好得多,因为它可以为您提供类型安全性并具有自记录功能。使用整数常量时,您必须查看API文档以找出有效的值,而没有什么可以阻止您使用无效值(或者更糟的是,完全不相关的整数常量)。使用Enums,方法签名直接告诉您哪些值是有效的(IDE自动补全将起作用),并且不可能使用无效的值。

不幸的是,即使在Java Standard API(并从那里广泛复制)中,“整数常量枚举”模式也很常见,因为Java在Java 5之前没有Enums。

以上是 Java枚举与静态常量 的全部内容, 来源链接: utcz.com/qa/413480.html

回到顶部