黑马程序员技术交流社区

标题: 关于枚举问题 [打印本页]

作者: 黑马-王鹏    时间: 2013-5-7 15:32
标题: 关于枚举问题
本帖最后由 黑马-王鹏 于 2013-5-7 17:30 编辑
  1. package cn.itcast.day1;

  2. public class EnumDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.       
  9.                  Weekday weekday = Weekday.SUN;
  10.                  System.out.println(weekday.nextDay().toSting());
  11.         }

  12. }
复制代码
  1. package cn.itcast.day1;

  2. public abstract class Weekday {
  3.         private Weekday(){}
  4.         public final static Weekday SUN = new Weekday(){

  5.                 @Override
  6.                 public Weekday nextDay() {
  7.                         // TODO Auto-generated method stub
  8.                         return MON;
  9.                 }
  10.         };
  11.         public final static Weekday MON = new Weekday(){

  12.                 @Override
  13.                 public Weekday nextDay() {
  14.                         // TODO Auto-generated method stub
  15.                         return SUN;
  16.                 }
  17.                
  18.         };
  19.         public abstract Weekday nextDay();
  20.         /*{
  21.                 if(this == SUN)
  22.                         return SUN;
  23.                 else {
  24.                         return MON;}
  25.         }*/
  26.     public String toSting(){
  27.             return this == SUN?"MON":"SUN";
  28.     }
  29. }
复制代码
为什么我运行结果是SUN?按照视频里张老师运行的应该是MON才对啊

作者: 一直在路上    时间: 2013-5-7 16:05
public final static Weekday MON = new Weekday(){

                @Override
                public Weekday nextDay() {
                        // TODO Auto-generated method stub
                        return SUN;
                }
               
        };
问题出在这儿,我发现你重写了nextDay() 这个方法好几次
你new的时候是从这儿的,所以返回SUN

作者: 孙金鑫    时间: 2013-5-7 16:56
本帖最后由 孙金鑫 于 2013-5-7 17:11 编辑

  1. <OL>
  2. <LI>Weekday weekday = Weekday.SUN;

  3.                  System.out.println(weekday.nextDay());
  4. //调用nextDay()就可以了



  5. public String toString(){
  6. </LI>
  7. <LI>            return this == SUN?"MON":"SUN";
  8. </LI></OL>//哥们你这里少写了一个r,覆盖的方法是toString(),不是toSting()
复制代码

作者: 黑马-王鹏    时间: 2013-5-7 17:29
孙金鑫 发表于 2013-5-7 16:56

对啊,太粗心了,还有就是return this == SUN?"SUN":"MON";中"SUN"和"MON"写反了




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