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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wangpan 于 2013-6-3 21:51 编辑

这是用普通类实现的枚举:

  1. <P>
  2. package fighting;</P>
  3. <P>public class WeekDay {
  4. private WeekDay(){
  5.   
  6. }

  7. public final static WeekDay SUN = new WeekDay();
  8. public final static WeekDay MON = new WeekDay();
  9. public final static WeekDay TUE = new WeekDay();
  10. public final static WeekDay WED = new WeekDay();
  11. public final static WeekDay THU = new WeekDay();
  12. public final static WeekDay FRI = new WeekDay();
  13. public final static WeekDay SAT = new WeekDay();</P>
  14. <P>
  15. public WeekDay nextDay(){
  16.   System.out.println("传过来的对象是:"+this);
  17.   if(this == SUN){
  18.    System.out.println("111111111");
  19.    return MON;
  20.   }else if(this == MON){
  21.    System.out.println("2222222222");
  22.    return TUE;
  23.   }else if(this == TUE){
  24.    System.out.println("33333333");
  25.    return WED;
  26.   }else if(this == WED){
  27.    System.out.println("44444444");
  28.    return THU;
  29.   }else if(this == THU){
  30.    System.out.println("555555555");
  31.    return FRI;
  32.   }else if(this == FRI){
  33.    System.out.println("66666666");
  34.    return SAT;
  35.   }else{
  36.    System.out.println("77777777");
  37.    return SUN;
  38.   }
  39. }

  40. public String toString(){
  41.   if(this == SUN){
  42.    return "Sunday";
  43.   }else if(this == MON){
  44.    return "Monday";
  45.   }else if(this == TUE){
  46.    return "Tuesday";
  47.   }else if(this == WED){
  48.    return "Wednesday";
  49.   }else if(this == THU){
  50.    return "Thursday";
  51.   }else if(this == FRI){
  52.    return "Friday";
  53.   }else{
  54.    return "Saturday";
  55.   }</P>
  56. <P> }
  57. }
  58. </P>
复制代码
这是调用枚举类的类:

  1. <P>package fighting;

  2. public class EnumDemo {</P>
  3. <P> public static void main(String[] args) {
  4.   WeekDay weekDay0 = WeekDay.SUN;
  5.   System.out.println("下一天是:"+weekDay0.nextDay());
  6.   System.out.println("---------------");
  7.   
  8.   WeekDay weekDay1 = WeekDay.MON;
  9.   System.out.println("下一天是:"+weekDay1.nextDay());
  10.   System.out.println("---------------");</P>
  11. <P>  WeekDay weekDay2 = WeekDay.TUE;
  12.   System.out.println("下一天是:"+weekDay2.nextDay());
  13.   System.out.println("---------------");</P>
  14. <P>  WeekDay weekDay3 = WeekDay.WED;
  15.   System.out.println("下一天是:"+weekDay3.nextDay());
  16.   System.out.println("---------------");</P>
  17. <P>  WeekDay weekDay4 = WeekDay.THU;
  18.   System.out.println("下一天是:"+weekDay4.nextDay());
  19.   System.out.println("---------------");</P>
  20. <P>  WeekDay weekDay5 = WeekDay.FRI;
  21.   System.out.println("下一天是:"+weekDay5.nextDay());
  22.   System.out.println("---------------");</P>
  23. <P>  WeekDay weekDay6 = WeekDay.SAT;
  24.   System.out.println("下一天是:"+weekDay6.nextDay());
  25. }</P>
  26. <P>}
  27. </P>
复制代码
运行结果是这样:
传过来的对象是:Sunday
111111111
下一天是:Monday
---------------
传过来的对象是:Monday
2222222222
下一天是:Tuesday
---------------
传过来的对象是:Tuesday
33333333
下一天是:Wednesday
---------------
传过来的对象是:Wednesday
44444444
下一天是:Thursday
---------------
传过来的对象是:Thursday
555555555
下一天是:Friday
---------------
传过来的对象是:Friday
66666666
下一天是:Saturday
---------------
传过来的对象是:Saturday
77777777
下一天是:Sunday

结果是正确的,想问一下,枚举类中的toString()方法有什么作用?

评分

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

查看全部评分

7 个回复

倒序浏览
就是以怎么样的形式把枚举的元素进行输出啊
比如  if(this == SUN){
   return "Sunday";
用字符串形式的Sunday表示枚举元素SUN啊

评分

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

查看全部评分

回复 使用道具 举报
王永贺 发表于 2013-6-2 21:08
就是以怎么样的形式把枚举的元素进行输出啊
比如  if(this == SUN){
   return "Sunday";

那到底是什么时候调用的这个方法呢,在程序里并没有显式的调用这个方法?
回复 使用道具 举报
wangpan 发表于 2013-6-2 21:46
那到底是什么时候调用的这个方法呢,在程序里并没有显式的调用这个方法? ...

默认调用的
回复 使用道具 举报
你的代码我没看,但是涉及到底层调用的话 应该差不多  
他的底层输出的时候在在调用那个方法,你学到枚举,集合肯定也学过了吧
  比如说 hashSet集合的底层是在调用 hashcode一样  他自己会调用那个方法的,
如果你想要他是否调用了那个方法,可以在被调用方法上面加上一个输出语句的
System.out.println("来个我来了");  就这样 加点一下就看出来的

评分

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

查看全部评分

回复 使用道具 举报
花开花落总相似 发表于 2013-6-2 22:01
你的代码我没看,但是涉及到底层调用的话 应该差不多  
他的底层输出的时候在在调用那个方法,你学到枚举, ...

谢谢~似乎明白了,toString是object的一个方法,应该是在打印输出对象的时候会自动调用这个方法,因为我重写了这个方法,所以会按照我写的方法去打印输出。如果我不重写这个方法的话,就会输出按照getClass().getName() + '@' + Integer.toHexString(hashCode())输出,结果像这样fighting.WeekDay1$2@1b90b39
回复 使用道具 举报

谢谢你的热情解答^^
回复 使用道具 举报
如果问题已经解决,请将问题分类改成"已解决",谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马