比较和包含枚举值
枚举只包含常量,可以直接与 ==
进行比较。因此,只需要参考检查,无需使用 .equals
方法。此外,如果 .equals
使用不正确,可能会提高 NullPointerException
而 ==
检查不是这样。
enum Day {
GOOD, AVERAGE, WORST;
}
public class Test {
public static void main(String[] args) {
Day day = null;
if (day.equals(Day.GOOD)) {//NullPointerException!
System.out.println("Good Day!");
}
if (day == Day.GOOD) {//Always use == to compare enum
System.out.println("Good Day!");
}
}
}
要对包含不同方法的 EnumSet
类的枚举值进行分组,补充,范围。
-
EnumSet#range
:按两个端点定义的范围获取枚举的子集 -
EnumSet#of
:一组没有任何范围的特定枚举。有多个重载的of
方法。 -
EnumSet#complementOf
:枚举的集合,它是方法参数中提供的枚举值的补充enum Page { A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 } public class Test { public static void main(String[] args) { EnumSet<Page> range = EnumSet.range(Page.A1, Page.A5); if (range.contains(Page.A4)) { System.out.println("Range contains A4"); } EnumSet<Page> of = EnumSet.of(Page.A1, Page.A5, Page.A3); if (of.contains(Page.A1)) { System.out.println("Of contains A1"); } } }