筆記本上沒記過,就在這裏寫一寫吧
1枚舉類型定義
enum WeekDay
{
SUNDAY,MONDAY,TUESDAY,WEDNESDAY,
THURSDAY,FRIDAY,SATURDAY;
}
public class EnumDemo
{
public static void main(String[] args)
{
WeekDay rest = WeekDay.SUNDAY;
System.out.println(rest);
}
}
2枚舉類型方法
方法摘要 | ||
---|---|---|
protected Object |
clone() 拋出 CloneNotSupportedException。 |
|
int |
compareTo(E o) 比較此枚舉與指定對象的順序。 |
|
boolean |
equals(Object other) 當指定對象等於此枚舉常量時,返回 true。 |
|
Class<E> |
getDeclaringClass() 返回與此枚舉常量的枚舉類型相對應的 Class 對象。 |
|
int |
hashCode() 返回枚舉常量的哈希碼。 |
|
String |
name() 返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明。 |
|
int |
ordinal() 返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數爲零)。 |
|
String |
toString() 返回枚舉常量的名稱,它包含在聲明中。 |
|
static
|
valueOf(Class<T> enumType, String name) 返回帶指定名稱的指定枚舉類型的枚舉常量。 |
下面代碼可以輸出每個枚舉長兩名和它們的順序號:
for(WeekDay d : WeekDay.values())
{
System.out.println(d + ", ordinal" +d.ordinal());
}
枚舉類型有個特別實用的特性,它可以在switch語句中使用:
public class EnumTest
{
WeekDay day;
public EnumTest(WeekDay day)
{
this.day = day;
}
public void describe()
{
switch(day)
{
case MONDAY:
System.out.println("Mondays are bad.");
break;
case FRIDAY:
System.out.println("Fridays are better.");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Weekends are best.");
break;
default:
System.out.println("Midweek days are so-so.");
break;
}
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
EnumTest firstDay = new EnumTest(WeekDay.MONDAY);
firstDay.describe();
EnumTest thirdDay = new EnumTest(WeekDay.WEDNESDAY);
thirdDay.describe();
EnumTest seventhDay = new EnumTest(WeekDay.SUNDAY);
seventhDay.describe();
}
}
3枚舉類型的構造方法
在枚舉類型的聲明中,除了枚舉常量外,還可以聲明構造方法,成員變量和其他方法
public class MealDemo
{
public enum Meal
{ //內部枚舉
BREAKFAST(7,30),LUNCH(12,15),DINNER(19,45);
private int hh;
private int mm;
Meal(int hh,int mm) //枚舉的構造方法
{
assert(hh >= 0 && hh <= 23):"小時範圍非法.";
assert(mm >= 0 && mm <= 59):"分鐘範圍非法";
this.hh = hh;
this.mm = mm;
}
public int getHour()
{return hh;}
public int getMins()
{return mm;}
}
public static void main(String[] args)
{
Meal bf = Meal.BREAKFAST;
System.out.println("早飯時間:" + bf.getHour() +":"+ bf.getMins());
}
}