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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐帅 中级黑马   /  2012-7-11 19:42  /  3393 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蓝色的枫叶 于 2012-7-12 09:52 编辑

在覆盖toString方法时,会报错:返回值类型应该是String类型。
不知道哪里错了。在覆盖toString() 方法时有特殊的格式么?
请帮解答下,谢谢了        
package cn.xushuai.day1;

public class Enum {
        
        public static void main(String[] args){
        
        WeekDay Monday = WeekDay.MON;
        WeekDay Tueday = WeekDay.TUE;

        System.out.println(Monday.nextDay());
        System.out.println(Tueday.nextDay());
}

package cn.xushuai.day1;

public abstract class WeekDay {
        
        private WeekDay(){}
        public abstract WeekDay nextDay();

        public final static WeekDay MON = new WeekDay(){
                public WeekDay nextDay(){
                        return TUE;
                }
        };
        public final static WeekDay TUE = new WeekDay(){
                public WeekDay nextDay(){
                        return WED;
                }
        };
        @Override
                public String toString(){
                         if (this==MON)
                                return "MON";
                        else if (this==TUE)
                                return "TUE";                        
                }
}









评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

8 个回复

正序浏览
关于toString()方法,在此做一下分析:
toString()是Object的方法,而所有类都是继承Object,所以“所有对象都有这个方法”
它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法
总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法。

if ...else if...有没有覆盖到的地方,所以它报错说可能没有返回值。我帮你完善了一下:

public abstract class WeekDay {
         private WeekDay() {
         }

        public abstract WeekDay nextDay();

        public final static WeekDay MON = new WeekDay() {
                 public WeekDay nextDay() {
                         return TUE;
                 }
         };
         public final static WeekDay TUE = new WeekDay() {
                 public WeekDay nextDay() {
                         return WED;
                 }
         };

        public final static WeekDay WED = new WeekDay() {
                 public WeekDay nextDay() {
                         return THU;
                 }
         };
         public final static WeekDay THU = new WeekDay() {
                 public WeekDay nextDay() {
                         return WED;
                 }
         };
         public final static WeekDay FRI = new WeekDay() {
                 public WeekDay nextDay() {
                         return SAT;
                 }
         };
         public final static WeekDay SAT = new WeekDay() {
                 public WeekDay nextDay() {
                         return SUN;
                 }
         };
           public final static WeekDay SUN = new WeekDay(){
           public WeekDay nextDay(){
                   return MON;
           }
   };
         @Override
         public String toString() {
                 if (this == MON)
                         return "MON";
                 else if (this ==TUE)
                         return "TUE";
                 else if (this == WED){
                         return "WED";
                 }
                 else if (this == THU){
                         return "THU";
                 }
                 else if (this == FRI){
                         return "FRI";
                 }
                 else if (this == SAT){
                         return "SAT";
                 }
                 else{
                        return "SUN";
                 }
         }
}
回复 使用道具 举报
徐帅 中级黑马 2012-7-12 09:52:07
8#
曹恒业 发表于 2012-7-11 21:08
@Override
                public String toString(){
                         if (this==MON)

谢谢,已解决
回复 使用道具 举报
徐帅 中级黑马 2012-7-12 09:51:40
7#
周刚 发表于 2012-7-12 00:46
if ...else if...有没有覆盖到的地方,所以它报错说可能没有返回值。我帮你完善了一下:

public abstract ...

非常感谢。是因为条件都没满足时没有返回值的原因,还有谢谢你的代码,呵呵
回复 使用道具 举报
本帖最后由 周刚 于 2012-7-12 00:51 编辑

if ...else if...有没有覆盖到的地方,所以它报错说可能没有返回值。我帮你完善了一下:

public abstract class WeekDay {
        private WeekDay() {
        }

        public abstract WeekDay nextDay();

        public final static WeekDay MON = new WeekDay() {
                public WeekDay nextDay() {
                        return TUE;
                }
        };
        public final static WeekDay TUE = new WeekDay() {
                public WeekDay nextDay() {
                        return WED;
                }
        };

        public final static WeekDay WED = new WeekDay() {
                public WeekDay nextDay() {
                        return THU;
                }
        };
        public final static WeekDay THU = new WeekDay() {
                public WeekDay nextDay() {
                        return WED;
                }
        };
        public final static WeekDay FRI = new WeekDay() {
                public WeekDay nextDay() {
                        return SAT;
                }
        };
        public final static WeekDay SAT = new WeekDay() {
                public WeekDay nextDay() {
                        return SUN;
                }
        };
          public final static WeekDay SUN = new WeekDay(){
          public WeekDay nextDay(){
                  return MON;
          }
  };
        @Override
        public String toString() {
                if (this == MON)
                        return "MON";
                else if (this ==TUE)
                        return "TUE";
                else if (this == WED){
                        return "WED";
                }
                else if (this == THU){
                        return "THU";
                }
                else if (this == FRI){
                        return "FRI";
                }
                else if (this == SAT){
                        return "SAT";
                }
                else{
                        return "SUN";
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
关于toString()方法,在此做一下分析:
toString()是Object的方法,而所有类都是继承Object,所以“所有对象都有这个方法”
它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法
总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法
回复 使用道具 举报

回帖奖励 +2

        @Override
                public String toString(){
                         if (this==MON)
                                return "MON";
                        else if (this==TUE)
                                return "TUE";
                       return “enether TUE nor MON”;     //当条件不满足时,没有返回值,所以编译错误,所以编程时要考虑到意外情况
                }
回复 使用道具 举报

回帖奖励 +2

好像是吧
回复 使用道具 举报

回帖奖励 +2

if (this==MON)
                 return "MON";
             else if (this==TUE)
                     return "TUE";                     
  


条件不满足时,无返回值 呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马