爲什麼要採用枚舉,而Java的常量?
我已閱讀,Java的枚舉類型提供了安全性。有人可以詳細說明嗎?或者有使用枚舉常量的其他優點?
爲什麼要採用枚舉,而Java的常量?
我已閱讀,Java的枚舉類型提供了安全性。有人可以詳細說明嗎?或者有使用枚舉常量的其他優點?
引述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值的含義。
使用枚舉是被調用的調用代碼和代碼之間的合同,一個給定的值是給定類型的。
圖片你有動物標識:
int DOG = 1;
int CAT = 2;
int COW = 3;
和可變:
int animal;
同時用3個這些數字只是操作就可以了。但如果你錯了,那麼編譯器可以檢查,如果你寫
animal = 5;
而你沒有看到錯誤兩個。枚舉爲您提供了一個更好的方法。
public enum Animal {
Dog,
Cat,
Cow
}
Animal animal = Animal.Dog;
現在你有類型安全。從類型安全的(已經提到)
一個原因擱置是枚舉有方法,這意味着代碼,使大量使用的常量可以遷移到枚舉類本身(無論是動態或靜態方法)。
另一個,但沒有提到的區別是,枚舉可以具有邏輯它們內部的,即,可以具有構造函數和方法。