为什么要采用枚举,而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;
现在你有类型安全。从类型安全的(已经提到)
一个原因搁置是枚举有方法,这意味着代码,使大量使用的常量可以迁移到枚举类本身(无论是动态或静态方法)。
另一个,但没有提到的区别是,枚举可以具有逻辑它们内部的,即,可以具有构造函数和方法。