黑马程序员技术交流社区

标题: java枚举的疑问一 [打印本页]

作者: lonely_zb    时间: 2013-9-4 18:16
标题: java枚举的疑问一
枚举的定义:
枚举类是一个class,而且是一个不可被继承的final类,其中的元素都是类静态常量。枚举被当做一个类来对待的话,在jdk中的java.lang包中有一个Enum类,查看API得知它也是一个枚举对象啊...那为什么,请看代码
public enum WeekDay{
  //枚举类里包含所有静态常量
  SUN,MON,THE,WED,THU,FRI,STA
} ---这样定义是正确的
可是
public Enum WeekDay{
  //枚举类里包含所有静态常量
  SUN,MON,THE,WED,THU,FRI,STA
} ---就会报错,请问是为什么呢?
为什么枚举被当做一个类来对待的话,java.lang包中提供的Enum又是什么作用呢?

作者: 武嘉豪    时间: 2013-9-4 18:28
构造方法详细信息
Enum
protected Enum(String name,
               int ordinal)单独的构造方法。程序员无法调用此构造方法。该构造方法用于由响应枚举类型声明的编译器发出的代码。

而enum是一个类似标识符的东西吧...

我个人理解
作者: 第一印象    时间: 2013-9-4 21:08
本帖最后由 第一印象 于 2013-9-4 21:13 编辑

这个,怎么说呢,enum其实在java中是一个关键字,跟class一样的,关键字什么意思知道吧,就是被赋予了特殊含义的一个单词啦,比如说你标记一个class的关键字我就知道你是一个类,标记一个enum的关键字我就知道你是一个枚举,就这个意思,而Enum不是一个关键字,它只是一个类的名称,像String类、Object类一样的,另外还有一些区别,我们知道所有被标记为enum的都是枚举,而枚举类默认都继承了java.lang.Enum类,Enum类就相当于是所有枚举类的上帝(父类),枚举类的上帝不是Object,而是Enum,就这些区别,有个细节,在张孝祥老师讲解的银行业务调度系统里,有个地方声明了一个枚举类,定义银行的各种用户类型,在返回VIP用户的时候,直接返回的name(),这个方法怎么来的呢?就是因为枚举类默认继承了Enum类,而Enum类拥有这个方法,所以可以直接用
作者: 薛鹏鹏    时间: 2013-9-4 23:34
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作

详情参考 如何修改分类





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2