enum の使い方と enum をいつ使うかを知っていれば、enum は非常に強力です。
ケース 1: 文字列定数値があり、それらを比較する場合。
列挙型がどのように役立つか: すべての文字列の列挙型をクレートし、文字列比較 emum のインストレッドを作成します。列挙型は数値であるハッシュ値に基づいて比較するため、文字列比較よりも高速です。
Oracle のドキュメントに示されているように、彼らは日曜日、月曜日を文字列ではなく列挙型として使用していました。
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
ケース 2: 定数が必要で、他の定数の値が結果に基づいているため、定数を比較する必要がある場合。たとえば。月の名前があり、月の名前に基づいて、そこに何日あるかを取得し、この場合、列挙型が非常に役立ちます。
たとえば。
enum MonthEnum {
JAN("Jan", 31, "Sunday"), Feb("Feb", 28, "Tuesday"), March("March", 28, "Monday");
private final String monthName;
private final int noOfDays;
private final String startDay;
private MonthEnum(final String monthName, final int noOfDays, final String startDay) {
this.monthName = monthName;
this.noOfDays = noOfDays;
this.startDay = startDay;
}
public String getMonthName() {
return monthName;
}
public int getNoOfDays() {
return noOfDays;
}
public String getStartDay() {
return startDay;
}
}
monthNameのみを渡すことで簡単に列挙型を取得できます
public static MonthEnum getMonthEnum(final String monthName) {
MonthEnum month = null;
for(MonthEnum monthEnum : MonthEnum.values()) {
if(monthEnum.getMonthName().equalsIgnoreCase(monthName)) {
month = monthEnum;
}
}
return month;
}