在Java 5中引入的Enum类的目的是什么?

Rom*_*man 3 java enums

我的建议:

1)要么enum只是在编译之前存在(就像泛型;但是我从来没有听过任何关于它的内容,而它在任何地方写的都是在编译后删除了泛型)

2)或Enum是一种以某种方式保持向后兼容性的方法(但我还没有看到这种方式).

还有其他建议吗?(顺便问一下,你有没有在你的代码中使用它?)

UPD:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Enum.html

换句话说,有一个enum关键字和Enum类.它们都出现在Java 5中.问题是:为什么我们需要两者?

第二个问题:为什么Enum成为API的一部分?

Mat*_*all 10

来自Java教程:

您需要在需要表示一组固定常量时使用枚举类型.这包括自然枚举类型,例如太阳系中的行星和数据集,您可以在编译时知道所有可能的值 - 例如,菜单上的选项,命令行标志等.

枚举非常有用,是的,我在代码中使用了很多次.


编辑:

...有一个enum关键字和Enum类.它们都出现在Java 5中.问题是:为什么我们需要两者?

这个问题类似于问"有一个class关键词和一个Object班级.为什么我们需要两个?"

在这两种情况下,关键字基本上都是编译器的提示; 您可以将它们视为语法糖,以节省您的击键次数,并让编译器减少工作量(通过不猜测您要声明的内容).

请参阅此q&a.

你在代码中使用过它吗?

答案仍然是"是的".特别是,Enum#valueOf()是一个用于解析字符串的静态方法:

DayOfWeek d = Enum.valueOf(DayOfWeek.class, "TUESDAY");
Run Code Online (Sandbox Code Playgroud)

但当然这也有效:

DayOfWeek d = DayOfWeek.valueOf("TUESDAY");
Run Code Online (Sandbox Code Playgroud)