如果我们知道如何使用 enum 以及何时使用 enum,那么 enum 是非常强大的
情况 1:当您有字符串常量值并且您正在比较它们时。
enum 如何提供帮助:创建所有字符串的枚举和比较字符串比较 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;
}