1. 程式人生 > >黑馬程式設計師——java高新技術:列舉

黑馬程式設計師——java高新技術:列舉

------- android培訓java培訓、期待與您交流! ----------

列舉是java1.5版本的新特性。

1,列舉是什麼?

就是讓某個型別的變數的取值只能為若干個固定值中的一個。可以讓編譯器在編譯時就可控制,避免出錯。

2.列舉的應用

(1)定義列舉使用 的關鍵字是enum,定義一個最簡單的列舉。

public class EnumText {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay weekDay1 = WeekDay.MON;
	}
	
	public enum WeekDay{
		SUN,MON,WED,THT,FRI,SAT;
		
	}
}
這就是一個最簡單的列舉。
(2)我們在看一個列舉
public enum TraffictLamp{
		RED(30) {
					@Override
					public TraffictLamp nextLamp() {
						// TODO Auto-generated method stub
						return GREEN;
					}
				},
		GREEN(35) {
			@Override
			public TraffictLamp nextLamp() {
				// TODO Auto-generated method stub
				return YELLOW;
			}
		},
		YELLOW(5) {
			@Override
			public TraffictLamp nextLamp() {
				// TODO Auto-generated method stub
				return RED;
			}
		};
		public abstract TraffictLamp  nextLamp();
		private int time;
		private TraffictLamp(int time){this.time = time;}
	}
列舉的幾個特性:

1、構造方法必須是private訪問許可權。

2、每一個元素(REDYELLOWBLACK)就是列舉類TraffictLamp的一個例項元素

3、列舉中可以有抽象方法,但是和定義普通類中抽象方法時,普通類必須是抽象類,而列舉不用,但是因為列舉類中有例項元素且有抽象方法,例項元素在定義時必須實現抽象方法。並且元素要看構造方法來具體定義。本例中定義了一個有引數的構造方法。

4,列舉是一種特殊的類,其中的每一個元素都是該類的一個例項物件,如果列舉只有一個成員時(也可以說是元素),就可以作為一種單例的實現方式。單例可以看做是一種列舉。

列舉的基本應用:常有方法有values()

valueOf()name()toString()ordinal()

values():獲取的是該列舉類陣列,為無參方法。

valueOfString name):獲得傳入的字串對應的列舉型別元素。注意傳入的字串要和列舉元素大小寫一模一樣。

name():獲得當前列舉型別元素的名字。

toString():name()方法一樣,獲得當前列舉型別元素的名字

ordinal():獲得當前列舉元素的在列舉中序號。


列舉總結:

1、列舉就相當於一個類,其中可以定義構造方法(必須私有),成員變數,普通方法和抽象方法。

2列舉元素必須位於列舉體中最開始部分,列舉元素列表的後面沒有其他成員時可以省略分號,若有其他成員則要用分號進行分割。

3、列舉只有一個成員時,可以作為一種單例的實現方法。

帶有構造方法的列舉:

 1、構造方法必須定義為私有。

2、如果有多個構造方法,列舉元素可以根據需要,呼叫相應的構造方法。

帶有方法的列舉:

定義列舉,有抽象方法時,每個元素都是該列舉的一個例項物件,所以每個元素都必須實現抽象方法,採用類似匿名類的方式進行實現。