比較和包含列舉值
列舉只包含常量,可以直接與 ==
進行比較。因此,只需要參考檢查,無需使用 .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"); } } }