Java 比较枚举的最佳方法
我有一个枚举,例如Java 比较枚举的最佳方法,java,enums,Java,Enums,我有一个枚举,例如enumcolor{Red,Brown}。我还有一些这种类型的变量: Color c1 = Brown, c2 = Red 与常量值进行比较的最佳方法是: if (c1 == Color.Brown) { //is brown } 或 使用==。同一枚举常量不能有多个实例(在类加载器的上下文中,但让我们忽略这一点),所以它总是安全的 也就是说,使用equals()也是安全的,并且也将执行引用相等。这几乎是一种风格选择 就我个人而言,我很少发现自己对枚举使用if语句
enumcolor{Red,Brown}
。我还有一些这种类型的变量:
Color c1 = Brown, c2 = Red
与常量值进行比较的最佳方法是:
if (c1 == Color.Brown) {
//is brown
}
或
使用
==
。同一枚举常量不能有多个实例(在类加载器的上下文中,但让我们忽略这一点),所以它总是安全的
也就是说,使用equals()
也是安全的,并且也将执行引用相等。这几乎是一种风格选择
就我个人而言,我很少发现自己对枚举使用if
语句。我喜欢开关块
switch (c1) {
case Brown:
//is brown
break;
case Red:
//...
}
两者都可以,但我认为为了简单起见,我选择==。我会选择.equals(…)
,因为它让我更快乐我宁愿把常数放在左边。这样,如果您不小心放入=就会出现编译器错误。Color.Brown==c1FYI,任何对这个问题感兴趣的人都会发现andEnumMap
类很有用。这个代码片段让我很伤心。丁:@月光:为什么?显然这是一个人为的例子,但这是OP的例子,不是我的。使用==因为枚举变量允许为null。IMO没有理由使用equals()
switch (c1) {
case Brown:
//is brown
break;
case Red:
//...
}