Java枚举常量

Java enums over Constants

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Understanding Enums in Java

为什么我们要使用枚举而不是Java常量?

我读过Java枚举提供类型安全性。有人能详细说明一下吗?或者使用枚举比使用常量有其他优势?


浸出率docs.oracle.com http://////javaoo JavaSE教程:Java / enum.html

1
2
3
4
public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY
}

当你有这个方法:

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

你知道,争论总是去的一天。

本:比较

1
2
3
4
5
const int MONDAY = 1;
const int TUESDAY = 2;

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

你可以通什么本法:

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

enum(或任何类型的使用,如类或接口)给你的类型:确定型安全系统,让你的孩子只能得到你想要的类型。第二型的例子是不安全的方法,因为在这方面,可以得到任何int作为论点,和你不知道确定的"int值的均值。

使用枚举是一个合同之间的代码和代码的电话被称为一个给定的值是有一个给定的类型。


南通:你有动物形象

1
2
3
4
5
int DOG = 1;

int CAT = 2;

int COW = 3;

和一个变量:

1
int animal;

它是好的,你有3只经营论文数。但如果你是错误的,那么编译器可以检查你,如果你写的

1
animal = 5;

你不要错误的两个湖泊。枚举提供你一个更好的方法。

1
2
3
4
5
6
7
8
9
10
11
public enum Animal {

  Dog,

  Cat,

  Cow

}

Animal animal = Animal.Dog;

现在你有类型安全。


另一个是枚举,但unmentioned差分逻辑里面有他们的CAN,CAN和方法,即一个ctor。


一种安全的原因(除了已经提到)是有意义的代码枚举的方法,让使用的常数可以migrate重金属的枚举类本身(无论是动态或静态方法)。