2012-01-16 152 views

回答

9

引述http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

public enum Day { 
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
    THURSDAY, FRIDAY, SATURDAY 
} 

,當你有這樣的方法:

public EnumTest(Day day) { 
    this.day = day; 
} 

你知道參數是不是要一天。

比較這樣的:

const int MONDAY = 1; 
const int TUESDAY = 2; 

const int CAT = 100; 
const int DOG = 101; 

你可以什麼傳遞給該方法:

public EnumTest(int day) { 
    this.day = day; 
} 

使用的enum(或任何類型的,如類或接口),讓你鍵入安全:類型系統確保你只能得到你想要的那種類型。第二個例子在這方面不是類型安全的,因爲你的方法可以得到任何int作爲參數,並且你不確定int值的含義。

使用枚舉是被調用的調用代碼和代碼之間的合同,一個給定的值是給定類型的。

5

圖片你有動物標識:

int DOG = 1; 

int CAT = 2; 

int COW = 3; 

和可變:

int animal; 

同時用3個這些數字只是操作就可以了。但如果你錯了,那麼編譯器可以檢查,如果你寫

animal = 5; 

而你沒有看到錯誤兩個。枚舉爲您提供了一個更好的方法。

public enum Animal { 

    Dog, 

    Cat, 

    Cow 

} 

Animal animal = Animal.Dog; 

現在你有類型安全。從類型安全的(已經提到)

0

一個原因擱置是枚舉有方法,這意味着代碼,使大量使用的常量可以遷移到枚舉類本身(無論是動態或靜態方法)。

1

另一個,但沒有提到的區別是,枚舉可以具有邏輯它們內部的,即,可以具有構造函數和方法。