java枚舉類型相關代碼

筆記本上沒記過,就在這裏寫一寫吧

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
<T extends Enum<T>> 
T
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());
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章