Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较枚举的最佳方法_Java_Enums - Fatal编程技术网

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,任何对这个问题感兴趣的人都会发现and
EnumMap
类很有用。这个代码片段让我很伤心。丁:@月光:为什么?显然这是一个人为的例子,但这是OP的例子,不是我的。使用==因为枚举变量允许为null。IMO没有理由使用equals()
switch (c1) {
    case Brown:
        //is brown
        break;
    case Red:
        //...
}