2012-01-16 118 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

另一个,但没有提到的区别是,枚举可以具有逻辑它们内部的,即,可以具有构造函数和方法。