A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 会飞的狼 中级黑马   /  2013-8-11 14:10  /  1899 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

枚举的定义方式怎么那么特别:
public enum WeekDay{
            SUN(1),MON(2),TUE,WED,THI,FRI,SAT;
}
方法不是方法,说他是声明变量它还没有等号,又没有class,难道它是和class的兄弟吗?而且是在类中定义,好像是内部类,谁能给我解释一下啊?

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

6 个回复

倒序浏览
枚举就是枚举,它有它固定的写法,可以写在内部,一般都是新建一个枚举。你可以把它当成一个类来理解
回复 使用道具 举报
1.先定义类型后定义变量
  格式: <枚举类型名> <变量1>〔,<变量2>,…,<变量n>〕;
  例如:enum colors
  {red=5,blue=1,green,black,white,yellow};
  colors c1,c2;
  c1、c2 为colors类型的枚举变量。


  2.定义类型的同时定义变量


  格式:enum <枚举类型名>
  { <枚举元素表> } <变量1>〔,<变量2>,…,<变量n>〕;
  例如:enum colors
  {red=5,blue=1,green,black,white,yellow}c1,c2;


  3.直接定义枚举变量


  格式:enum
  { <枚举元素表> } <变量1>〔,<变量2>,…,<变量n>〕;
  例如:enum
  {red=5,blue=1,green,black,white,yellow} c1=red,c2=blue;
  由上例可以看出,定义枚举变量时,可对变量进行初始化赋值,c1的初始值为red,c2的初始值为blue。

出处:http://blog.csdn.net/lbsjs/article/details/178896

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 魏先勇 于 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. }
复制代码
回复 使用道具 举报
就如接口也是一个特殊的类,接口不也没有class吗?
枚举也相当于一个特殊的类,所以可以定义在类里面,当做"内部类"使用,也可以单独定义,那么它就是一个特殊的类。
每个枚举元素可以看作是一个成员变量。
回复 使用道具 举报
枚举就是一个特殊的类啊,就像接口、注解什么的,用枚举创建一个整型常量集(相当于该类的实例),这些常量集就是枚举类的成员。
比如:public enum lamp{RED,GREEN,YELLOW}

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

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
亲,如问题已解决请将分类的未解决改为已解决。

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


保持队形,谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马