java中枚舉的使用

在JDK1.5引入了新的類型——枚舉,存放在 java.lang 包中。
下面是我在使用 enum 過程中的一些代碼

package com.test;

// 枚舉用於存放同一類型的參數
public enum TestWeekEnum {
	Monday(1, "星期一"), Tuesday(2, "星期二"), Wednesday(3, "星期三"), Thursday(4, "星期四"), Friday(5, "星期五"), Saturday(
			6, "星期六"), Sunday(7, "星期天");

	int code;// 參數值
	String destription;// 參數說明

	TestWeekEnum(int code, String destription) {
		this.code = code;
		this.destription = destription;
	}

	// 判斷傳入code在枚舉中是否存在
	public boolean eqlues(TestWeekEnum type, int code) {
		return code == type.code;
	}

	// 根據傳入code返回相應的枚舉類型
	public static TestWeekEnum getDiscountType(int code) {
		for (TestWeekEnum valuesEnum : TestWeekEnum.values()){
			if (code == valuesEnum.getCode()){
				return valuesEnum;
			}
		}
		return null;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getDestription() {
		return destription;
	}

	public void setDestription(String destription) {
		this.destription = destription;
	}

	public static void main(String[] args) {
		System.out.println(TestWeekEnum.Monday.code);
		System.out.println(TestWeekEnum.Monday.destription);
		System.out.println(TestWeekEnum.getDiscountType(3).destription);

		// 枚舉是一種類型,用於定義變量,以限制變量的賦值;賦值時通過“枚舉名.值”取得枚舉中的值
		TestWeekEnum testWeekEnum = TestWeekEnum.Sunday;
		switch (testWeekEnum) {
		case Monday:
			System.out.println("week is Monday");
			break;
		case Tuesday:
			System.out.println("week is Tuesday");
			break;
		case Thursday:
			System.out.println("week is Thursday");
			break;
		case Wednesday:
			System.out.println("week is Wednesday");
			break;
		case Friday:
			System.out.println("week is Friday");
			break;
		case Saturday:
			System.out.println("week is Saturday");
			break;
		case Sunday:
			System.out.println("week is Sunday");
			break;
		default:
			System.out.println("null");
			break;
		}

		// 遍歷枚舉
		System.out.println("遍歷TestWeekEnum枚舉中的值");
		for (TestWeekEnum week : TestWeekEnum.values()){
			System.out.println(week);
		}

		// 獲取枚舉的個數
		System.out.println("TestWeekEnum枚舉中的值有" + TestWeekEnum.values().length + "個");

		// 獲取枚舉的索引位置,默認從0開始
		System.out.println(TestWeekEnum.Monday.ordinal());// 0
		System.out.println(TestWeekEnum.Tuesday.ordinal());// 1

		// 枚舉默認實現了java.lang.Comparable接口
		System.out.println(TestWeekEnum.Monday.compareTo(TestWeekEnum.Sunday));// -1

	}
}


 enum 的語法結構儘管和 class 的語法不一樣,但是經過編譯器編譯之後產生的是一個class文件。該class文件經過反編譯可以看到實際上是生成了一個類,該類繼承了java.lang.Enum。實際上 enum 就是一個 class,只不過 java 編譯器幫我們做了語法的解析和編譯而已。

發佈了27 篇原創文章 · 獲贊 41 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章