黑马程序员技术交流社区

标题: 关于枚举定义方式的思考 [打印本页]

作者: 会飞的狼    时间: 2013-8-11 14:10
标题: 关于枚举定义方式的思考
枚举的定义方式怎么那么特别:
public enum WeekDay{
            SUN(1),MON(2),TUE,WED,THI,FRI,SAT;
}
方法不是方法,说他是声明变量它还没有等号,又没有class,难道它是和class的兄弟吗?而且是在类中定义,好像是内部类,谁能给我解释一下啊?
作者: 陈贺    时间: 2013-8-11 14:31
枚举就是枚举,它有它固定的写法,可以写在内部,一般都是新建一个枚举。你可以把它当成一个类来理解
作者: masterV    时间: 2013-8-11 23:22
本帖最后由 魏先勇 于 2013-8-11 23:24 编辑

public enum WeekDay{
            SUN(1),MON(2),TUE,WED,THI,FRI,SAT;
}
枚举跟类和接口是一样的,都是一种类型的定义方式。每一个枚举值都是一个该枚举类的实例对象,至于后面有没有括号的问题,就跟类中调用带参数的构造方法还是调用不带参数的性质一样了。
你的代码不完整,完整的代码应该是这样的:
  1. public enum WeekDay
  2. {
  3.         SUN(1), MON(2), TUE, WED, THI, FRI, SAT;
  4.         
  5.         WeekDay()
  6.         {
  7.         }
  8.         
  9.         WeekDay(int i)
  10.         {
  11.         }
  12. }
复制代码

作者: 吴光新    时间: 2013-8-12 03:02
就如接口也是一个特殊的类,接口不也没有class吗?
枚举也相当于一个特殊的类,所以可以定义在类里面,当做"内部类"使用,也可以单独定义,那么它就是一个特殊的类。
每个枚举元素可以看作是一个成员变量。
作者: 清心玉质    时间: 2013-8-12 10:03
枚举就是一个特殊的类啊,就像接口、注解什么的,用枚举创建一个整型常量集(相当于该类的实例),这些常量集就是枚举类的成员。
比如:public enum lamp{RED,GREEN,YELLOW}

为了使用枚举,需要创建这个枚举类的引用,将引用指向实例:lamp lm = lamp.RED;
因为枚举会创建toString方法,所以可以直接打印枚举实例的名字:System.out.println(lm)


作者: 以防万一    时间: 2013-8-13 22:22
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作




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