我有一个枚举,例如 enum Color { Red, Brown }
。我还有一些相同类型的变量:
Color c1 = Brown, c2 = Red
如何与常量值进行比较:
if (c1 == Color.Brown) {
//is brown
}
或者
if (c1.equals(Color.Brown)) {
//is brown
}
请使用==
,因为在同一类装载器的上下文中不可能有多个相同的枚举常量(尽管我们可以忽略这一点),所以总是安全的。
话虽如此,使用equals()
也很安全,并且也会执行引用相等性比较。这基本上是一个风格选择。
就我个人而言,我很少使用if
语句来处理枚举。我更喜欢使用switch
语句块。
switch (c1) {
case Brown:
//is brown
break;
case Red:
//...
}
.equals(...)
,因为它让我更开心。 :D - MoonbeamEnumSet
和EnumMap
类,这些类可能会对这个问题有所帮助。 - Basil Bourqueequals
accepts anObject
and so there is less type safety compared to==
- WW.