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

© 911趣购 中级黑马   /  2014-3-31 00:10  /  995 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package Test;

  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.    };
  12.    public final static WeekDay MON=new WeekDay(){

  13.         @Override
  14.         public WeekDay nextDay() {
  15.                 // TODO Auto-generated method stub
  16.                 return SUN;
  17.         }
  18.           
  19.    };
  20.    //采用抽象方法将ifelse语句转换为一个独立的类
  21.    public abstract WeekDay nextDay();
  22.    
  23.   /* public WeekDay nextDay(){
  24.            if(this==SUN){
  25.                    return MON;
  26.            }else{
  27.                    return SUN;
  28.            }
  29.    }*/
  30.    //打印这个枚举对象
  31.    public String toString(){
  32.            return this==SUN?"SUN":"MON";
  33.    }
  34. }
复制代码

今天看到张老师的枚举类型的课程  遇到了这里不明白的  该怎么理解呢
return this==SUN?"SUN":"MON";---------这里的this===为什么等于的是SUN呢?


评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
  1. public final static WeekDay MON=new WeekDay(){

  2.         @Override
  3.         public WeekDay nextDay() {
  4.                 // TODO Auto-generated method stub
  5.                 return SUN;
  6.         }
  7.            
  8.    };
复制代码

上面这个内部类的引用为MON,调用它的nextDay方法返回的是个引用SUN。当我们在主函数调用的时候:
  1. WeekDay weekday = new WeekDay.MON;
  2. System.out.println(weekday.nextDay().toString());
复制代码

上面代码的输出是SUN。
现在weekday引用指向MON,所以调用weekday.nextDay()返回的是SUN的引用。之后再调用toString()方法,就相当于SUN.toString()。return this==SUN?"SUN":"MON";这里的this指的是所创建引用调用nextDay()方法后所返回的nextday的引用,现在创建的引用为MON,调用nextDay()返回SUN,所以判断它是不是SUN,是就返回SUN,不是就返回MON.

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马