Java枚舉類

枚舉類入門java

    枚舉類是一種特殊的類,它同樣能夠有本身的方法和屬性,能夠實現一個或者多個接口,也能夠定義本身的構造器。ide

枚舉類與普通類的區別:函數

  • 使用enum定義的枚舉類默認繼承了java.lang.Enum類,而不是繼承Object類;this

  • 枚舉類的構造器只能使用private訪問控制符,若是省略了其構造器的訪問控制符,則默認使用用private修飾;spa

  • 枚舉類的全部實例必須在枚舉中顯式列出,不然這個枚舉類將永遠都不能產生實例。code

java.lang.Enum類中提供了以下幾個方法:
對象

  • int compareTo(E o):該方法用於與指定枚舉對象比較順序,同一個枚舉實例只能與相同類型的枚舉實例進行比較。若是該枚舉對象位於指定枚舉對象以後,則返回正整數;反之,則返回零。繼承

  • String name():返回此枚舉實例的名稱,這個名稱就是定義枚舉類時列出的全部枚舉值之一。應該優先考慮使用toString()方法,由於toString()方法返回更加用戶友好的名稱。索引

  • int ordinal():返回枚舉值在枚舉類中的索引值(就是枚舉值在枚舉聲明中的位置,第一枚舉值的索引值爲零)。接口

  • String toString():返回枚舉常量的名稱。

  • public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name):用於返回指定枚舉類中指定名稱的枚舉值。名稱必須與在該枚舉類中聲明枚舉時所用的標識符徹底匹配,不容許使用額外的空白字符。

枚舉類的使用

  一、枚舉類型的簡單定義方法以下:

public enum Season {
	SPRING,SUMMER,FALL,WINTER;
}

這樣定義只可以表示出春、夏、秋、冬,可是具體的值沒有表示出來。不過枚舉類型提供了構造函數,能夠經過構造函數和覆寫toString方法來實現。改造後的代碼:

public enum Season {

	SPRING(1),SUMMER(2),FALL(3),WINTER(4);
	
	// 定義私有變量
	private int value;
	
	private Season(int value) {
		this.value = value;
	}
	
	@Override
	public String toString() {
		return String.valueOf(value);
	}
}

  二、包含方法的枚舉類

public enum Season {

	SPRING(1), SUMMER(2), FALL(3), WINTER(4);

	// 定義私有變量
	private int value;

	private Season(int value) {
		this.value = value;
	}

	@Override
	public String toString() {
		return String.valueOf(value);
	}

	public Season next() {
		Season season = null;
		switch (this) { // 表明枚舉的一個值
			case SPRING:
				season = SUMMER;
				break;
			case SUMMER:
				season = FALL;
				break;
			case FALL:
				season = WINTER;
				break;
			case WINTER:
				season = SPRING;
				break;
		}
		return season;
	}
}

  三、包含抽象方法的枚舉類

public enum Season {

	SPRING(1) {
		public Season next() {
			return SUMMER;
		}
	},
	SUMMER(2) {
		public Season next() {
			return FALL;
		}
	},
	FALL(3) {
		public Season next() {
			return WINTER;
		}
	},
	WINTER(4) {
		public Season next() {
			return SPRING;
		}
	};
	
	// 定義私有變量
	private int value;
	
	private Season(int value) {
		this.value = value;
	}
	
	@Override
	public String toString() {
		return String.valueOf(value);
	}
	
	// 爲枚舉類定義一個抽象方法,這個抽象方法由不一樣枚舉值提供不一樣的事項
	public abstract Season next();
}
相關文章
相關標籤/搜索